mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add ActiveRecord::Base.exists? with no args [#1817 state:committed]
Signed-off-by: David Heinemeier Hansson <david@loudthinking.com>
This commit is contained in:
parent
6db78e8c02
commit
5a8f764661
3 changed files with 19 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
|||
*Edge*
|
||||
|
||||
* Added that ActiveRecord::Base.exists? can be called with no arguments #1817 [Scott Taylor]
|
||||
|
||||
|
||||
*2.3.0 [RC1] (February 1st, 2009)*
|
||||
|
||||
* Add Support for updating deeply nested models from a single form. #1202 [Eloy Duran]
|
||||
|
|
|
@ -663,7 +663,7 @@ module ActiveRecord #:nodoc:
|
|||
|
||||
|
||||
# Returns true if a record exists in the table that matches the +id+ or
|
||||
# conditions given, or false otherwise. The argument can take four forms:
|
||||
# conditions given, or false otherwise. The argument can take five forms:
|
||||
#
|
||||
# * Integer - Finds the record with this primary key.
|
||||
# * String - Finds the record with a primary key corresponding to this
|
||||
|
@ -672,6 +672,7 @@ module ActiveRecord #:nodoc:
|
|||
# (such as <tt>['color = ?', 'red']</tt>).
|
||||
# * Hash - Finds the record that matches these +find+-style conditions
|
||||
# (such as <tt>{:color => 'red'}</tt>).
|
||||
# * No args - Returns false if the table is empty, true otherwise.
|
||||
#
|
||||
# For more information about specifying conditions as a Hash or Array,
|
||||
# see the Conditions section in the introduction to ActiveRecord::Base.
|
||||
|
@ -685,7 +686,8 @@ module ActiveRecord #:nodoc:
|
|||
# Person.exists?('5')
|
||||
# Person.exists?(:name => "David")
|
||||
# Person.exists?(['name LIKE ?', "%#{query}%"])
|
||||
def exists?(id_or_conditions)
|
||||
# Person.exists?
|
||||
def exists?(id_or_conditions = {})
|
||||
connection.select_all(
|
||||
construct_finder_sql(
|
||||
:select => "#{quoted_table_name}.#{primary_key}",
|
||||
|
|
|
@ -95,6 +95,15 @@ class FinderTest < ActiveRecord::TestCase
|
|||
assert_raise(NoMethodError) { Topic.exists?([1,2]) }
|
||||
end
|
||||
|
||||
def test_exists_returns_true_with_one_record_and_no_args
|
||||
assert Topic.exists?
|
||||
end
|
||||
|
||||
def test_does_not_exist_with_empty_table_and_no_args_given
|
||||
Topic.delete_all
|
||||
assert !Topic.exists?
|
||||
end
|
||||
|
||||
def test_exists_with_aggregate_having_three_mappings
|
||||
existing_address = customers(:david).address
|
||||
assert Customer.exists?(:address => existing_address)
|
||||
|
|
Loading…
Reference in a new issue