Module: MultiModelWizard::DynamicValidation
- Included in:
- FormObject::Base
- Defined in:
- lib/multi_model_wizard/dynamic_validation.rb
Instance Method Summary collapse
-
#valid_attribute?(*attributes, model_instance:) ⇒ Boolean
Validates attributes using the original model and returns boolean for the given attributes.
-
#validate_attribute_with_message(*attributes, model_instance:) ⇒ Object
Validates attributes using the original model and returns a boolean and a message for the given attributes.
Instance Method Details
#valid_attribute?(*attributes, model_instance:) ⇒ Boolean
Validates attributes using the original model and returns boolean for the given attributes
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/multi_model_wizard/dynamic_validation.rb', line 9 def valid_attribute?(*attributes, model_instance:) model_instance.errors.clear attributes.flatten! attributes = attributes.first if attributes.first.is_a?(Hash) attributes.each do |attribute, validator_types| validators = model_instance.class.validators_on(attribute) if validator_types.present? validator_types = Array(validator_types) validators.select! { |validator| validator.kind.in?(validator_types) } end validators.each { |validator| validator.validate(model_instance) } end model_instance.errors.empty? end |
#validate_attribute_with_message(*attributes, model_instance:) ⇒ Object
Validates attributes using the original model and returns a boolean and a message for the given attributes
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/multi_model_wizard/dynamic_validation.rb', line 33 def ( *attributes, model_instance:) model_instance.errors.clear attributes.flatten! attributes = attributes.first if attributes.first.is_a?(Hash) attributes.each do |attribute, value| validators = model_instance.class.ancestors.map { |x| x.try(:validators_on, attribute) }.compact.flatten validators.each { |validator| validator.validate(model_instance) } end OpenStruct.new(valid: model_instance.errors.empty?, messages: model_instance.errors..uniq ) end |