find_by_scan(*args)
private
If using a custom finder_sql, #find
scans the entire collection.
# File activerecord/lib/active_record/associations/collection_association.rb, line 510
def find_by_scan(*args)
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
end