method
find
rails latest stable - Class:
ActiveRecord::Associations::AssociationCollection
find(*args)public
No documentation available.
# File activerecord/lib/active_record/associations/association_collection.rb, line 42
def find(*args)
options = args.extract_options!
# If using a custom finder_sql, scan the entire collection.
if @reflection.options[:finder_sql]
expects_array = args.first.kind_of?(Array)
ids = args.flatten.compact.uniq.map { |arg| arg.to_i }
if ids.size == 1
id = ids.first
record = load_target.detect { |r| id == r.id }
expects_array ? [ record ] : record
else
load_target.select { |r| ids.include?(r.id) }
end
else
merge_options_from_reflection!(options)
construct_find_options!(options)
find_scope = construct_scope[:find].slice(:conditions, :order)
with_scope(:find => find_scope) do
relation = @reflection.klass.send(:construct_finder_arel, options, @reflection.klass.send(:current_scoped_methods))
case args.first
when :first, :last
relation.send(args.first)
when :all
records = relation.all
@reflection.options[:uniq] ? uniq(records) : records
else
relation.find(*args)
end
end
end
end