instance method
exists?
Ruby on Rails 4.2.9
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?(id: [1, 4, 8]) Person.exists?(name: 'David') Person.exists?(false) Person.exists?
Parameters
-
conditionsopt = :none
Source
# File activerecord/lib/active_record/relation/finder_methods.rb, line 277
def exists?(conditions = :none)
if Base === conditions
conditions = conditions.id
ActiveSupport::Deprecation.warn(<<-MSG.squish)
You are passing an instance of ActiveRecord::Base to `exists?`.
Please pass the id of the object by calling `.id`
MSG
end
return false if !conditions
relation = apply_join_dependency(self, construct_join_dependency)
return false if ActiveRecord::NullRelation === relation
relation = relation.except(:select, :order).select(ONE_AS_ONE).limit(1)
case conditions
when Array, Hash
relation = relation.where(conditions)
else
unless conditions == :none
relation = relation.where(primary_key => conditions)
end
end
connection.select_value(relation, "#{name} Exists", relation.arel.bind_values + relation.bind_values) ? true : false
end
Defined in activerecord/lib/active_record/relation/finder_methods.rb line 277
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::FinderMethods