Method: FormObject::Base#validate_multiple_instance_model
- Defined in:
- lib/form_object/base.rb
#validate_multiple_instance_model(attribute) ⇒ Object
Note:
this method uses a special method #validate_attribute_with_message this method comes from
Note:
this method will add the model errors to your object instance and invalidate it.
Much like #validate_attributes this method will validate the attributes of a instance model using the original model the an DynamicValidation module and is not built in with ActiveRecord The model errors are using the original attribute names
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/form_object/base.rb', line 176 def validate_multiple_instance_model(attribute) raise ArgumentError, 'Attribute must be a Symbol' unless attribute.is_a?(Symbol) unless respond_to?(attribute) raise FormObject::AttributeNameError, "#{attribute.to_s} is not a valid attribute of this form object" end model_instance = attribute_lookup.dig(attribute.to_sym, :model)&.constantize&.new return nil if model_instance.nil? send(attribute).map do |hash_instance| hash_instance.map do |key, value| model_instance&.send("#{key}=", value) validation = ({ "#{key}": value }, model_instance: model_instance ) if validation.valid.eql?(false) validation..each { |err| errors.add(attribute.to_sym, err) } end validation.valid end end.compact.all?(true) end |