aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2016-12-09 09:29:54 +1030
committerMatthew Draper <matthew@trebex.net>2016-12-09 09:32:07 +1030
commit847e9dd5c12b34856f5c74d52bc6c86b1735ffe5 (patch)
treed117d74cdd6b4deda31fbf352dcba42127080bf4 /activerecord/lib
parent0951306ca5edbaec10edf3440d5ba11062a4f2e5 (diff)
downloadrails-847e9dd5c12b34856f5c74d52bc6c86b1735ffe5.tar.gz
rails-847e9dd5c12b34856f5c74d52bc6c86b1735ffe5.tar.bz2
rails-847e9dd5c12b34856f5c74d52bc6c86b1735ffe5.zip
Resolve association class correctly when assigning ids on a through association
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/associations/collection_association.rb2
-rw-r--r--activerecord/lib/active_record/reflection.rb4
2 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations/collection_association.rb b/activerecord/lib/active_record/associations/collection_association.rb
index 3d23fa1e46..46923f690a 100644
--- a/activerecord/lib/active_record/associations/collection_association.rb
+++ b/activerecord/lib/active_record/associations/collection_association.rb
@@ -75,7 +75,7 @@ module ActiveRecord
r.send(reflection.association_primary_key)
end.values_at(*ids).compact
if records.size != ids.size
- scope.raise_record_not_found_exception!(ids, records.size, ids.size, reflection.association_primary_key)
+ klass.all.raise_record_not_found_exception!(ids, records.size, ids.size, reflection.association_primary_key)
else
replace(records)
end
diff --git a/activerecord/lib/active_record/reflection.rb b/activerecord/lib/active_record/reflection.rb
index 17751c9571..e1a3c59f08 100644
--- a/activerecord/lib/active_record/reflection.rb
+++ b/activerecord/lib/active_record/reflection.rb
@@ -850,6 +850,10 @@ module ActiveRecord
actual_source_reflection.options[:primary_key] || primary_key(klass || self.klass)
end
+ def association_primary_key_type
+ klass.type_for_attribute(association_primary_key)
+ end
+
# Gets an array of possible <tt>:through</tt> source reflection names in both singular and plural form.
#
# class Post < ActiveRecord::Base