Sha256: 37f3b748179fc13a59e5f3f4195a41f93fc70e3254a89139a0b9d2681d907252

Contents?: true

Size: 814 Bytes

Versions: 2

Compression:

Stored size: 814 Bytes

Contents

module ActiveRecord
  module StrictValidations
    class Validation < Struct.new(:model, :field)
      # Inject validations into an ActiveRecord model
      def self.inject_validations(model, options = {})
        except = options[:except] || []
        model_columns = model.columns.dup.reject { |c| except.include?(c.name.to_sym) }

        if only = options[:only]
          model_columns = model_columns.select { |c| only.include?(c.name.to_sym) }
        end

        model_columns.each do |field|
          validation = "#{field.type.to_s.camelize}Validation"

          if ActiveRecord::StrictValidations::Validation.const_defined?(validation)
            "ActiveRecord::StrictValidations::Validation::#{validation}".constantize.new(model, field).apply
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activerecord_strict_validations-0.3.1 lib/active_record/strict_validations/validation.rb
activerecord_strict_validations-0.3 lib/active_record/strict_validations/validation.rb