Class: BlockKit::Validators::AssociatedValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- BlockKit::Validators::AssociatedValidator
- Defined in:
- lib/block_kit/validators/associated_validator.rb
Overview
Allows using Rails’ ‘validates_associated` method for ActiveModel models. The built-in validator only supports ActiveRecord models.
See: github.com/rails/rails/blob/main/activerecord/lib/active_record/validations/associated.rb
Instance Method Summary collapse
Instance Method Details
#validate_each(record, attribute, value) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/block_kit/validators/associated_validator.rb', line 10 def validate_each(record, attribute, value) if value.is_a?(Array) if value.any?(&:invalid?) record.errors.add(attribute, :invalid, **, value: value, invalid_values: value.select(&:invalid?)) end value.each_with_index do |item, i| unless item.valid? = (item.errors) record.errors.add("#{attribute}[#{i}]", "is invalid: #{.join(", ")}", **, value: item) end end elsif value.present? && value.invalid? = (value.errors) record.errors.add(attribute, "is invalid: #{.join(", ")}", **, value: value) end end |