aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/association_relation.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2018-10-07 15:44:05 +0900
committerRyuta Kamizono <kamipo@gmail.com>2018-10-07 22:42:31 +0900
commit1f8534ca85c32ee26f0e179ac38acf7e61fb0e69 (patch)
tree716f5ace1da34936214961477c9626104e082670 /activerecord/lib/active_record/association_relation.rb
parent651d8743a634837d47070503fde39e97df2e54d0 (diff)
downloadrails-1f8534ca85c32ee26f0e179ac38acf7e61fb0e69.tar.gz
rails-1f8534ca85c32ee26f0e179ac38acf7e61fb0e69.tar.bz2
rails-1f8534ca85c32ee26f0e179ac38acf7e61fb0e69.zip
Fix `AssociationRelation` not to set inverse instance key just like before
Since #31575, `set_inverse_instance` replaces the foreign key by the current owner immediately to make it happen when a record is added to collection association. But `set_inverse_instance` is not only called when a record is added, but also when a record is loaded from queries. And also, that loaded records are not always associated records for some reason (using `or`, `unscope`, `rewhere`, etc). It is hard to distinguish whether or not we should invoke `set_inverse_instance`, but at least we should avoid the undesired side-effect which was brought from #31575. Fixes #34108.
Diffstat (limited to 'activerecord/lib/active_record/association_relation.rb')
-rw-r--r--activerecord/lib/active_record/association_relation.rb6
1 files changed, 3 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/association_relation.rb b/activerecord/lib/active_record/association_relation.rb
index 403667fb70..4c538ef2bd 100644
--- a/activerecord/lib/active_record/association_relation.rb
+++ b/activerecord/lib/active_record/association_relation.rb
@@ -31,9 +31,9 @@ module ActiveRecord
private
def exec_queries
- super do |r|
- @association.set_inverse_instance r
- yield r if block_given?
+ super do |record|
+ @association.set_inverse_instance_from_queries(record)
+ yield record if block_given?
end
end
end