aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-12-26 20:15:09 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-12-26 20:15:09 -0700
commit67da59097909295c59574e3fd3b502022f860aea (patch)
treebaf154a5745cfc8a05e07d0f531608a75ac1de3b /activerecord
parent7e91ad3f89ba134d863072db8db06ece6ec3ef19 (diff)
downloadrails-67da59097909295c59574e3fd3b502022f860aea.tar.gz
rails-67da59097909295c59574e3fd3b502022f860aea.tar.bz2
rails-67da59097909295c59574e3fd3b502022f860aea.zip
make our hash of klasses and ids actually have classes for keys
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/association_preload.rb14
1 files changed, 6 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/association_preload.rb b/activerecord/lib/active_record/association_preload.rb
index 94bcc869c2..b39b703a92 100644
--- a/activerecord/lib/active_record/association_preload.rb
+++ b/activerecord/lib/active_record/association_preload.rb
@@ -329,7 +329,7 @@ module ActiveRecord
if klass = record.send(polymorph_type)
klass_id = record.send(primary_key_name)
if klass_id
- id_map = klasses_and_ids[klass] ||= {}
+ id_map = klasses_and_ids[klass.constantize] ||= {}
(id_map[klass_id.to_s] ||= []) << record
end
end
@@ -340,16 +340,14 @@ module ActiveRecord
key && key.to_s
end
id_map.delete nil
- klasses_and_ids[reflection.klass.name] = id_map unless id_map.empty?
+ klasses_and_ids[reflection.klass] = id_map unless id_map.empty?
end
- klasses_and_ids.each do |klass_name, _id_map|
- klass = klass_name.constantize
-
- table = klass.arel_table
+ klasses_and_ids.each do |klass, _id_map|
+ table = klass.arel_table
primary_key = (reflection.options[:primary_key] || klass.primary_key).to_s
- method = in_or_equal(_id_map.keys)
- conditions = table[primary_key].send(*method)
+ method = in_or_equal(_id_map.keys)
+ conditions = table[primary_key].send(*method)
custom_conditions = append_conditions(reflection, preload_options)
conditions = custom_conditions.inject(conditions) do |ast, cond|