Condense first_or_last a bit more

This commit is contained in:
Jon Leighton 2011-01-24 22:47:18 +00:00
parent fdee153ff8
commit ca7785847e

@ -498,7 +498,7 @@ def ensure_owner_is_persisted!
# * target contains new or changed record(s)
# * the first arg is an integer (which indicates the number of records to be returned)
def fetch_first_or_last_using_find?(args)
if args.first.kind_of?(Hash) && !args.first.empty?
if args.first.is_a?(Hash)
true
else
!(loaded? ||
@ -536,12 +536,10 @@ def find_by_scan(*args)
# Fetches the first/last using SQL if possible, otherwise from the target array.
def first_or_last(type, *args)
if fetch_first_or_last_using_find?(args)
scoped.send(type, *args)
else
args.shift if args.first.kind_of?(Hash) && args.first.empty?
load_target.send(type, *args)
end
args.shift if args.first.is_a?(Hash) && args.first.empty?
collection = fetch_first_or_last_using_find?(args) ? scoped : load_target
collection.send(type, *args)
end
end
end