method
find
Ruby on Rails latest stable (v7.1.3.2)
-
0 notes -
Class: ActiveRecord::Associations::AssociationCollection
find(*args)
public
Hide source
# 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