From 67da59097909295c59574e3fd3b502022f860aea Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Sun, 26 Dec 2010 20:15:09 -0700 Subject: make our hash of klasses and ids actually have classes for keys --- activerecord/lib/active_record/association_preload.rb | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'activerecord/lib/active_record/association_preload.rb') 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| -- cgit v1.2.3