Merge pull request #29631 from kamipo/should_be_clear_association_ids

Should be clear `@association_ids` when joined newly associated record
This commit is contained in:
Matthew Draper 2017-07-01 22:33:27 +09:30 committed by GitHub
commit e469e9dfac
2 changed files with 16 additions and 2 deletions

View File

@ -66,6 +66,7 @@ module ActiveRecord
def reset
super
@target = []
@association_ids = nil
end
def find(*args)
@ -355,7 +356,10 @@ module ActiveRecord
transaction do
add_to_target(build_record(attributes)) do |record|
yield(record) if block_given?
insert_record(record, true, raise) { @_was_loaded = loaded? }
insert_record(record, true, raise) {
@_was_loaded = loaded?
@association_ids = nil
}
end
end
end
@ -428,7 +432,12 @@ module ActiveRecord
records.each do |record|
raise_on_type_mismatch!(record)
add_to_target(record) do
result &&= insert_record(record, true, raise) { @_was_loaded = loaded? } unless owner.new_record?
unless owner.new_record?
result &&= insert_record(record, true, raise) {
@_was_loaded = loaded?
@association_ids = nil
}
end
end
end

View File

@ -2558,6 +2558,11 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
assert_equal [bulb.id], car.bulb_ids
assert_no_queries { car.bulb_ids }
bulb2 = car.bulbs.create!
assert_equal [bulb.id, bulb2.id], car.bulb_ids
assert_no_queries { car.bulb_ids }
end
def test_loading_association_in_validate_callback_doesnt_affect_persistence