diff --git a/activerecord/lib/active_record/association_preload.rb b/activerecord/lib/active_record/association_preload.rb index 61fa34a..ae064ec 100644 --- a/activerecord/lib/active_record/association_preload.rb +++ b/activerecord/lib/active_record/association_preload.rb @@ -220,12 +220,16 @@ module ActiveRecord klass_name, id_map = *klass_and_id klass = klass_name.constantize + # do not find if there are no ids + uniq_ids = id_map.keys.uniq + next if uniq_ids.empty? + table_name = klass.quoted_table_name primary_key = klass.primary_key conditions = "#{table_name}.#{connection.quote_column_name(primary_key)} IN (?)" conditions << append_conditions(options, preload_options) column_type = klass.columns.detect{|c| c.name == primary_key}.type - ids = id_map.keys.uniq.map do |id| + ids = uniq_ids.map do |id| if column_type == :integer id.to_i elsif column_type == :float