From 9c9fb19b9eda46a76d7ce4fd6cb9cc94bd965e62 Mon Sep 17 00:00:00 2001 From: Himesh Date: Thu, 23 Jul 2015 15:49:22 +0530 Subject: Changed id-writer to save join table records based on association primary key #20995 Changed id-writer to save join table records based on association primary key --- .../lib/active_record/associations/collection_association.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'activerecord/lib/active_record/associations/collection_association.rb') diff --git a/activerecord/lib/active_record/associations/collection_association.rb b/activerecord/lib/active_record/associations/collection_association.rb index 87576abd92..333dd4f180 100644 --- a/activerecord/lib/active_record/associations/collection_association.rb +++ b/activerecord/lib/active_record/associations/collection_association.rb @@ -72,7 +72,10 @@ module ActiveRecord pk_type = reflection.primary_key_type ids = Array(ids).reject(&:blank?) ids.map! { |i| pk_type.cast(i) } - replace(klass.find(ids).index_by(&:id).values_at(*ids)) + records = klass.where(reflection.association_primary_key => ids).index_by do |r| + r.send(reflection.association_primary_key) + end.values_at(*ids) + replace(records) end def reset -- cgit v1.2.3