FinalCAD/csv_row_model

View on GitHub
lib/csv_row_model/concerns/check_options.rb

Summary

Maintainability
A
0 mins
Test Coverage
module CsvRowModel
  module CheckOptions
    extend ActiveSupport::Concern

    class_methods do
      def check_options(*klasses)
        options = klasses.extract_options!
        valid_options = klasses.map {|klass| klass.try(:valid_options) }.compact.flatten

        invalid_options = options.keys - valid_options
        raise ArgumentError.new("Invalid option(s): #{invalid_options}") if invalid_options.present?

        klasses.each { |klass| klass.try(:custom_check_options, options) }
        true
      end
    end
  end
end