aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorNeeraj Singh <neerajdotname@gmail.com>2010-11-14 21:54:24 -0500
committerAaron Patterson <aaron.patterson@gmail.com>2010-11-15 10:12:23 -0800
commit7c5c1a07c03ec03536636c26e09b80b29a59beed (patch)
tree002109e6cf69ff0e957a582a19944d015c2176fb /activerecord/lib/active_record
parent022519a032c830afa1fa1b9d02a27acf5588476b (diff)
downloadrails-7c5c1a07c03ec03536636c26e09b80b29a59beed.tar.gz
rails-7c5c1a07c03ec03536636c26e09b80b29a59beed.tar.bz2
rails-7c5c1a07c03ec03536636c26e09b80b29a59beed.zip
if association is already loaded and if a find operation is performed on the already loaded association list with an empty hash then do not perform another sql
[#5972 state:resolved]
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/associations/association_collection.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations/association_collection.rb b/activerecord/lib/active_record/associations/association_collection.rb
index 71d8c2d3c8..5b34ac907c 100644
--- a/activerecord/lib/active_record/associations/association_collection.rb
+++ b/activerecord/lib/active_record/associations/association_collection.rb
@@ -75,6 +75,7 @@ module ActiveRecord
find(:first, *args)
else
load_target unless loaded?
+ args = args[1..-1] if args.first.kind_of?(Hash) && args.first.empty?
@target.first(*args)
end
end
@@ -544,7 +545,7 @@ module ActiveRecord
end
def fetch_first_or_last_using_find?(args)
- args.first.kind_of?(Hash) || !(loaded? || !@owner.persisted? || @reflection.options[:finder_sql] ||
+ (args.first.kind_of?(Hash) && !args.first.empty?) || !(loaded? || !@owner.persisted? || @reflection.options[:finder_sql] ||
!@target.all? { |record| record.persisted? } || args.first.kind_of?(Integer))
end