diff options
author | Matthew Draper <matthew@trebex.net> | 2016-12-09 09:29:54 +1030 |
---|---|---|
committer | Matthew Draper <matthew@trebex.net> | 2016-12-09 09:32:07 +1030 |
commit | 847e9dd5c12b34856f5c74d52bc6c86b1735ffe5 (patch) | |
tree | d117d74cdd6b4deda31fbf352dcba42127080bf4 /activerecord/lib | |
parent | 0951306ca5edbaec10edf3440d5ba11062a4f2e5 (diff) | |
download | rails-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.rb | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/reflection.rb | 4 |
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 |