mirror of
https://github.com/github/rails.git
synced 2026-01-30 16:58:15 -05:00
Base.exists? doesn't rescue exceptions to avoid hiding SQL errors. Closes #10458.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8375 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Base.exists? doesn't rescue exceptions to avoid hiding SQL errors. #10458 [Michael Klishin]
|
||||
|
||||
* Documentation: Active Record exceptions, destroy_all and delete_all. #10444, #10447 [Michael Klishin]
|
||||
|
||||
|
||||
|
||||
@@ -550,9 +550,8 @@ module ActiveRecord #:nodoc:
|
||||
# Person.exists?(:name => "David")
|
||||
# Person.exists?(['name LIKE ?', "%#{query}%"])
|
||||
def exists?(id_or_conditions)
|
||||
!find(:first, :select => "#{table_name}.#{primary_key}", :conditions => expand_id_conditions(id_or_conditions)).nil?
|
||||
rescue ActiveRecord::ActiveRecordError
|
||||
false
|
||||
!find(:first, :select => "#{quoted_table_name}.#{primary_key}",
|
||||
:conditions => expand_id_conditions(id_or_conditions)).nil?
|
||||
end
|
||||
|
||||
# Creates an object (or multiple objects) and saves it to the database, if validations pass.
|
||||
|
||||
@@ -28,7 +28,15 @@ class FinderTest < Test::Unit::TestCase
|
||||
assert Topic.exists?(:author_name => "Mary", :approved => true)
|
||||
assert Topic.exists?(["parent_id = ?", 1])
|
||||
assert !Topic.exists?(45)
|
||||
assert !Topic.exists?("foo")
|
||||
|
||||
begin
|
||||
assert !Topic.exists?("foo")
|
||||
rescue ActiveRecord::StatementInvalid
|
||||
# PostgreSQL complains about string comparison with integer field
|
||||
rescue Exception
|
||||
flunk
|
||||
end
|
||||
|
||||
assert_raise(NoMethodError) { Topic.exists?([1,2]) }
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user