Class: ActiveRecord::Import::Validator
- Inherits:
-
Object
- Object
- ActiveRecord::Import::Validator
- Defined in:
- lib/activerecord-import/import.rb
Instance Method Summary collapse
-
#initialize(validators, options = {}) ⇒ Validator
constructor
A new instance of Validator.
- #valid_model?(model) ⇒ Boolean
- #validate?(validator, model) ⇒ Boolean
Constructor Details
#initialize(validators, options = {}) ⇒ Validator
Returns a new instance of Validator.
27 28 29 30 |
# File 'lib/activerecord-import/import.rb', line 27 def initialize(validators, = {}) @validators = validators @options = end |
Instance Method Details
#valid_model?(model) ⇒ Boolean
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/activerecord-import/import.rb', line 32 def valid_model?(model) validation_context = @options[:validate_with_context] validation_context ||= (model.new_record? ? :create : :update) current_context = model.send(:validation_context) model.send(:validation_context=, validation_context) model.errors.clear validation_proc = lambda do @validators.each do |v| if validation_context == v..fetch(:on, validation_context) v.validate(model) if validate?(v, model) end end end if model.respond_to?(:run_validation_callbacks) model.send(:_run_validation_callbacks, &validation_proc) else model.send(:run_callbacks, :validation, &validation_proc) end model.send(:validation_context=, current_context) model.errors.empty? end |
#validate?(validator, model) ⇒ Boolean
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/activerecord-import/import.rb', line 58 def validate?(validator, model) evaluate = lambda do |condition| case condition when String then model.instance_eval(condition) when Symbol then model.send(condition) when Proc then model.instance_eval(&condition) end end Array(validator.[:if]).map(&evaluate).compact.all? && !Array(validator.[:unless]).map(&evaluate).compact.any? end |