From 2f944123f32ad37efc84f13de25350beb7f8fed6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 17 Mar 2005 14:12:25 +0000 Subject: Added Base.exists?(id) that'll return true if an object of the class with the given id exists #854 [stian@grytoyr.net] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@913 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ activerecord/lib/active_record/base.rb | 7 +++++++ activerecord/test/finder_test.rb | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 8655d2bf6b..4f8204821c 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added Base.exists?(id) that'll return true if an object of the class with the given id exists #854 [stian@grytoyr.net] + * Added optionally allow for nil or empty strings with validates_numericality_of #801 [Sebastian Kanthak] * Fixed problem with using slashes in validates_format_of regular expressions #801 [Sebastian Kanthak] diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 7fbef9f07c..f85cad1f98 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -326,6 +326,13 @@ module ActiveRecord #:nodoc: end end + # Returns true if the given +id+ represents the primary key of a record in the database, false otherwise. + # Example: + # Person.exists?(5) + def exists?(id) + !find_first("#{primary_key} = #{sanitize(id)}").nil? + end + # This method is deprecated in favor of find with the :conditions option. # Works like find, but the record matching +id+ must also meet the +conditions+. # +RecordNotFound+ is raised if no record can be found matching the +id+ or meeting the condition. diff --git a/activerecord/test/finder_test.rb b/activerecord/test/finder_test.rb index a5eaca039e..3b239b581c 100755 --- a/activerecord/test/finder_test.rb +++ b/activerecord/test/finder_test.rb @@ -10,6 +10,13 @@ class FinderTest < Test::Unit::TestCase assert_equal(@topics["first"]["title"], Topic.find(1).title) end + def test_exists + assert (Topic.exists?(1)) + assert !(Topic.exists?(45)) + assert !(Topic.exists?("foo")) + assert !(Topic.exists?([1,2])) + end + def test_find_by_array_of_one_id assert_kind_of(Array, Topic.find([ 1 ])) assert_equal(1, Topic.find([ 1 ]).length) -- cgit v1.2.3