From d6d0fe8c8f68529404d8186634f1f7b5f6f4b32c Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Sun, 27 Dec 2009 18:28:59 +0530 Subject: [PATCH] Make Model.find(:first, ..) use relations --- activerecord/lib/active_record/base.rb | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 5ea1bc983e64d..0766dfe7520e8 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -645,7 +645,7 @@ def find(*args) case args.first when :first - find_initial(options) + construct_finder_arel_with_includes(options).first when :last find_last(options) when :all @@ -1519,11 +1519,6 @@ def arel_table(table = nil) end private - def find_initial(options) - options.update(:limit => 1) - find_every(options).first - end - def find_last(options) order = options[:order] @@ -1540,7 +1535,7 @@ def find_last(options) end begin - find_initial(options.merge({ :order => order })) + construct_finder_arel_with_includes(options).order(order).first ensure scope[:order] = original_scoped_order if original_scoped_order end @@ -1558,23 +1553,6 @@ def reverse_sql_order(order_query) }.join(',') end - def find_every(options) - include_associations = merge_includes(scope(:find, :include), options[:include]) - - if include_associations.any? && references_eager_loaded_tables?(options) - records = find_with_associations(options) - else - records = find_by_sql(construct_finder_sql(options)) - if include_associations.any? - preload_associations(records, include_associations) - end - end - - records.each { |record| record.readonly! } if options[:readonly] - - records - end - # Finder methods must instantiate through this method to work with the # single-table inheritance model that makes it possible to create # objects of different types from the same table.