diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-03-17 14:12:25 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-03-17 14:12:25 +0000 |
commit | 2f944123f32ad37efc84f13de25350beb7f8fed6 (patch) | |
tree | b0bb91ac280fe3bffc910fe7d954c232810712fd | |
parent | 9776bfc8a0e110dce751d0e78305432a155b93cd (diff) | |
download | rails-2f944123f32ad37efc84f13de25350beb7f8fed6.tar.gz rails-2f944123f32ad37efc84f13de25350beb7f8fed6.tar.bz2 rails-2f944123f32ad37efc84f13de25350beb7f8fed6.zip |
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
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 7 | ||||
-rwxr-xr-x | activerecord/test/finder_test.rb | 7 |
3 files changed, 16 insertions, 0 deletions
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) |