def last(*args)
first_arg = args.first
last_arg = args.last
limit_specified = first_arg.kind_of?(Integer)
with_query = (last_arg.kind_of?(Hash) && !last_arg.empty?) || last_arg.kind_of?(Query)
limit = limit_specified ? first_arg : 1
query = with_query ? last_arg : {}
query = self.query.slice(0, limit).update(query).reverse!
query.update(:add_reversed => !query.add_reversed?)
loaded = loaded?
tail = self.tail
collection = if !with_query && (loaded || lazy_possible?(tail, limit))
new_collection(query, super(limit))
else
all(query)
end
return collection if limit_specified
resource = collection.to_a.last
if with_query || loaded
resource
elsif resource
tail[tail.empty? ? 0 : -1] = resource
end
end