diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2019-04-24 16:16:00 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-24 16:16:00 -0400 |
commit | d4d145a6795ee7f461ef86a07e73a1f13fdb8574 (patch) | |
tree | ed4780a32c4e78d9890db43e02499e1b2e25d907 /activerecord/lib/active_record | |
parent | 9834be65655e8552d25633b7376ab0654a23875d (diff) | |
parent | 5e24c333505c3bab3c85d834ac985281f141709f (diff) | |
download | rails-d4d145a6795ee7f461ef86a07e73a1f13fdb8574.tar.gz rails-d4d145a6795ee7f461ef86a07e73a1f13fdb8574.tar.bz2 rails-d4d145a6795ee7f461ef86a07e73a1f13fdb8574.zip |
Merge pull request #32313 from lulalala/model_error_as_object
Model error as object
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/autosave_association.rb | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb index 50f29a81a6..8d89e7d84a 100644 --- a/activerecord/lib/active_record/autosave_association.rb +++ b/activerecord/lib/active_record/autosave_association.rb @@ -330,21 +330,16 @@ module ActiveRecord if reflection.options[:autosave] indexed_attribute = !index.nil? && (reflection.options[:index_errors] || ActiveRecord::Base.index_nested_attribute_errors) - record.errors.each do |attribute, message| + record.errors.group_by_attribute.each { |attribute, errors| attribute = normalize_reflection_attribute(indexed_attribute, reflection, index, attribute) - errors[attribute] << message - errors[attribute].uniq! - end - - record.errors.details.each_key do |attribute| - reflection_attribute = - normalize_reflection_attribute(indexed_attribute, reflection, index, attribute).to_sym - record.errors.details[attribute].each do |error| - errors.details[reflection_attribute] << error - errors.details[reflection_attribute].uniq! - end - end + errors.each { |error| + self.errors.import( + error, + attribute: attribute + ) + } + } else errors.add(reflection.name) end @@ -500,9 +495,7 @@ module ActiveRecord end def _ensure_no_duplicate_errors - errors.messages.each_key do |attribute| - errors[attribute].uniq! - end + errors.uniq! end end end |