aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/collection_association.rb
diff options
context:
space:
mode:
authorBogdan Gusiev <agresso@gmail.com>2019-02-06 16:28:48 +0200
committerBogdan Gusiev <agresso@gmail.com>2019-02-08 11:39:53 +0200
commit7f153e936af6ae2ac1809e5758000aaf003a1f62 (patch)
tree24ebebc8a285affcce0054cf3072022f3ad4c090 /activerecord/lib/active_record/associations/collection_association.rb
parent44232b485485634d681c60868c619323f882e59f (diff)
downloadrails-7f153e936af6ae2ac1809e5758000aaf003a1f62.tar.gz
rails-7f153e936af6ae2ac1809e5758000aaf003a1f62.tar.bz2
rails-7f153e936af6ae2ac1809e5758000aaf003a1f62.zip
Bugfix has_many association #size when ids reader is cached and association is changed
Diffstat (limited to 'activerecord/lib/active_record/associations/collection_association.rb')
-rw-r--r--activerecord/lib/active_record/associations/collection_association.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations/collection_association.rb b/activerecord/lib/active_record/associations/collection_association.rb
index 6f5df807fe..c6941a2e76 100644
--- a/activerecord/lib/active_record/associations/collection_association.rb
+++ b/activerecord/lib/active_record/associations/collection_association.rb
@@ -348,7 +348,6 @@ module ActiveRecord
add_to_target(record) do
result = insert_record(record, true, raise) {
@_was_loaded = loaded?
- @association_ids = nil
}
end
raise ActiveRecord::Rollback unless result
@@ -385,6 +384,7 @@ module ActiveRecord
delete_records(existing_records, method) if existing_records.any?
@target -= records
+ @association_ids = nil
records.each { |record| callback(:after_remove, record) }
end
@@ -425,7 +425,6 @@ module ActiveRecord
unless owner.new_record?
result &&= insert_record(record, true, raise) {
@_was_loaded = loaded?
- @association_ids = nil
}
end
end
@@ -448,6 +447,7 @@ module ActiveRecord
if index
target[index] = record
elsif @_was_loaded || !loaded?
+ @association_ids = nil
target << record
end