instance method
exists?
Ruby on Rails 4.0.13
Since v3.0.20Signature
exists?(conditions = :none)
Returns true if a record exists in the table that matches the id or conditions given, or false otherwise. The argument can take six forms:
-
Integer - Finds the record with this primary key.
-
String - Finds the record with a primary key corresponding to this string (such as
'5'). -
Array - Finds the record that matches these
find-style conditions (such as['name LIKE ?', "%#{query}%"]). -
Hash - Finds the record that matches these
find-style conditions (such as{name: 'David'}). -
false- Returns alwaysfalse. -
No args - Returns
falseif the table is empty,trueotherwise.
For more information about specifying conditions as a hash or array, see the Conditions section in the introduction to ActiveRecord::Base.
Note: You can’t pass in a condition as a string (like name = 'Jamie'), since it would be sanitized and then queried against the primary key column, like id = 'name = \'Jamie\''.
Person.exists?(5) Person.exists?('5') Person.exists?(['name LIKE ?', "%#{query}%"]) Person.exists?(name: 'David') Person.exists?(false) Person.exists?
Parameters
-
conditionsopt = :none
Source
# File activerecord/lib/active_record/relation/finder_methods.rb, line 160
def exists?(conditions = :none)
conditions = conditions.id if Base === conditions
return false if !conditions
join_dependency = construct_join_dependency_for_association_find
relation = construct_relation_for_association_find(join_dependency)
relation = relation.except(:select, :order).select("1 AS one").limit(1)
case conditions
when Array, Hash
relation = relation.where(conditions)
else
relation = relation.where(table[primary_key].eq(conditions)) if conditions != :none
end
connection.select_value(relation, "#{name} Exists", relation.bind_values) ? true : false
rescue ThrowResult
false
end
Defined in activerecord/lib/active_record/relation/finder_methods.rb line 160
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::FinderMethods