diff --git a/lib/active_data/model/validations/nested.rb b/lib/active_data/model/validations/nested.rb index 9e461d9..54fe1a7 100644 --- a/lib/active_data/model/validations/nested.rb +++ b/lib/active_data/model/validations/nested.rb @@ -18,7 +18,8 @@ def self.validate_nested(record, name, value) def self.import_errors(from, to, prefix) from.each do |error| key = "#{prefix}.#{error.attribute}" - to.import(error, attribute: key) unless to.added?(key, error.type, error.options) + ignored_options = ActiveModel::Error::CALLBACKS_OPTIONS + ActiveModel::Error::MESSAGE_OPTIONS + to.import(error, attribute: key) unless to.added?(key, error.type, error.options.except(*ignored_options)) end end else # up to 6.0.x diff --git a/spec/lib/active_data/model/validations/nested_spec.rb b/spec/lib/active_data/model/validations/nested_spec.rb index d8aa462..54fef68 100644 --- a/spec/lib/active_data/model/validations/nested_spec.rb +++ b/spec/lib/active_data/model/validations/nested_spec.rb @@ -10,7 +10,7 @@ primary :id, Integer attribute :name, String - validates_presence_of :name + validates_presence_of :name, message: "can't be blank" end stub_model(:unvalidated_assoc) do @@ -90,6 +90,11 @@ expect { instance.validate }.to change { instance.errors.messages } .to('validated_one.name': ["can't be blank"]) end + + specify do + expect { 2.times { instance.send :run_validations! } }.to change { instance.errors.messages } + .to('validated_one.name': ["can't be blank"]) + end end context 'accepts nested attributes for one' do