Permalink
Browse files

Merge pull request #31214 from chopraanmol1/bug_fix_has_one_inverse_o…

…wner_reload_from_validation

Inverse instance should not be reloaded during autosave if called in validation
  • Loading branch information...
eileencodes committed Nov 29, 2017
2 parents 5211c0d + c10152d commit 527ad1a32c2baf2a78c73104ac8aa52b39514f1f
@@ -436,6 +436,9 @@ def save_has_one_association(reflection)
if (autosave && record.changed_for_autosave?) || new_record? || record_changed?(reflection, record, key)
unless reflection.through_reflection
record[reflection.foreign_key] = key
if inverse_reflection = reflection.inverse_of
record.association(inverse_reflection.name).loaded!
end
end
saved = record.save(validate: !autosave)
@@ -675,6 +675,16 @@ def test_inversed_instance_should_not_be_reloaded_after_stale_state_changed
assert_equal old_inversed_man.object_id, new_inversed_man.object_id
end
def test_inversed_instance_should_not_be_reloaded_after_stale_state_changed_with_validation
face = Face.new man: Man.new
old_inversed_man = face.man
face.save!
new_inversed_man = face.man
assert_equal old_inversed_man.object_id, new_inversed_man.object_id
end
def test_should_not_try_to_set_inverse_instances_when_the_inverse_is_a_has_many
i = interests(:llama_wrangling)
m = i.polymorphic_man
@@ -8,4 +8,8 @@ class Face < ActiveRecord::Base
# These is a "broken" inverse_of for the purposes of testing
belongs_to :horrible_man, class_name: "Man", inverse_of: :horrible_face
belongs_to :horrible_polymorphic_man, polymorphic: true, inverse_of: :horrible_polymorphic_face
validate do
man
end
end

0 comments on commit 527ad1a

Please sign in to comment.