mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Make Model.find(:first, ..) use relations
This commit is contained in:
parent
59cf5e7bf2
commit
d6d0fe8c8f
1 changed files with 2 additions and 24 deletions
|
@ -645,7 +645,7 @@ module ActiveRecord #:nodoc:
|
||||||
|
|
||||||
case args.first
|
case args.first
|
||||||
when :first
|
when :first
|
||||||
find_initial(options)
|
construct_finder_arel_with_includes(options).first
|
||||||
when :last
|
when :last
|
||||||
find_last(options)
|
find_last(options)
|
||||||
when :all
|
when :all
|
||||||
|
@ -1519,11 +1519,6 @@ module ActiveRecord #:nodoc:
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_initial(options)
|
|
||||||
options.update(:limit => 1)
|
|
||||||
find_every(options).first
|
|
||||||
end
|
|
||||||
|
|
||||||
def find_last(options)
|
def find_last(options)
|
||||||
order = options[:order]
|
order = options[:order]
|
||||||
|
|
||||||
|
@ -1540,7 +1535,7 @@ module ActiveRecord #:nodoc:
|
||||||
end
|
end
|
||||||
|
|
||||||
begin
|
begin
|
||||||
find_initial(options.merge({ :order => order }))
|
construct_finder_arel_with_includes(options).order(order).first
|
||||||
ensure
|
ensure
|
||||||
scope[:order] = original_scoped_order if original_scoped_order
|
scope[:order] = original_scoped_order if original_scoped_order
|
||||||
end
|
end
|
||||||
|
@ -1558,23 +1553,6 @@ module ActiveRecord #:nodoc:
|
||||||
}.join(',')
|
}.join(',')
|
||||||
end
|
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
|
# Finder methods must instantiate through this method to work with the
|
||||||
# single-table inheritance model that makes it possible to create
|
# single-table inheritance model that makes it possible to create
|
||||||
# objects of different types from the same table.
|
# objects of different types from the same table.
|
||||||
|
|
Loading…
Reference in a new issue