aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Molina <marcel@vernix.org>2006-01-05 21:40:15 +0000
committerMarcel Molina <marcel@vernix.org>2006-01-05 21:40:15 +0000
commit945dd920ab0954acdbc9b3317145b267a9638a50 (patch)
tree28b908d1c7f562e2fe6eb3feade392cad48a3df2
parenta5708b4c1f137baba8510ca1e1985bd1f878604b (diff)
downloadrails-945dd920ab0954acdbc9b3317145b267a9638a50.tar.gz
rails-945dd920ab0954acdbc9b3317145b267a9638a50.tar.bz2
rails-945dd920ab0954acdbc9b3317145b267a9638a50.zip
Don't raise an exception when there are more keys than there are named bind variables when sanitizing conditions.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3382 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--activerecord/CHANGELOG2
-rwxr-xr-xactiverecord/lib/active_record/base.rb1
-rwxr-xr-xactiverecord/test/deprecated_finder_test.rb6
-rw-r--r--activerecord/test/finder_test.rb16
4 files changed, 2 insertions, 23 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG
index 590f4d8300..8841ada2be 100644
--- a/activerecord/CHANGELOG
+++ b/activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Don't raise an exception when there are more keys than there are named bind variables when sanitizing conditions. [Marcel Molina Jr.]
+
* Multiple enhancements and adjustments to DB2 adaptor. #3377 [contact@maik-schmidt.de]
* Sanitize scoped conditions. [Marcel Molina Jr.]
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 94bdce5b19..7ba5beb12b 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1140,7 +1140,6 @@ module ActiveRecord #:nodoc:
end
def replace_named_bind_variables(statement, bind_vars)
- raise_if_bind_arity_mismatch(statement, statement.scan(/:(\w+)/).uniq.size, bind_vars.size)
statement.gsub(/:(\w+)/) do
match = $1.to_sym
if bind_vars.include?(match)
diff --git a/activerecord/test/deprecated_finder_test.rb b/activerecord/test/deprecated_finder_test.rb
index 1409e0d1d4..35c8a2379a 100755
--- a/activerecord/test/deprecated_finder_test.rb
+++ b/activerecord/test/deprecated_finder_test.rb
@@ -74,12 +74,6 @@ class DeprecatedFinderTest < Test::Unit::TestCase
assert_nil Company.find_first(["name = :name", { :name => "37signals!" }])
assert_nil Company.find_first(["name = :name", { :name => "37signals!' OR 1=1" }])
assert_kind_of Time, Topic.find_first(["id = :id", { :id => 1 }]).written_on
- assert_raises(ActiveRecord::PreparedStatementInvalid) {
- Company.find_first(["id=:id and name=:name", { :id=>3 }])
- }
- assert_raises(ActiveRecord::PreparedStatementInvalid) {
- Company.find_first(["id=:id", { :id=>3, :name=>"37signals!" }])
- }
end
def test_count
diff --git a/activerecord/test/finder_test.rb b/activerecord/test/finder_test.rb
index 7e73eec7ad..515ec0f777 100644
--- a/activerecord/test/finder_test.rb
+++ b/activerecord/test/finder_test.rb
@@ -157,22 +157,6 @@ class FinderTest < Test::Unit::TestCase
assert_nil Company.find(:first, :conditions => ["name = :name", { :name => "37signals!" }])
assert_nil Company.find(:first, :conditions => ["name = :name", { :name => "37signals!' OR 1=1" }])
assert_kind_of Time, Topic.find(:first, :conditions => ["id = :id", { :id => 1 }]).written_on
- assert_raises(ActiveRecord::PreparedStatementInvalid) {
- Company.find(:first, :conditions => ["id=:id and name=:name", { :id=>3 }])
- }
- assert_raises(ActiveRecord::PreparedStatementInvalid) {
- Company.find(:first, :conditions => ["id=:id", { :id=>3, :name=>"37signals!" }])
- }
- end
-
- def test_named_bind_arity
- assert_nothing_raised { bind '', {} }
- assert_raises(ActiveRecord::PreparedStatementInvalid) { bind '', :a => 1 }
- assert_raises(ActiveRecord::PreparedStatementInvalid) { bind ':a', {} } # ' ruby-mode
- assert_nothing_raised { bind ':a', :a => 1 } # ' ruby-mode
- assert_raises(ActiveRecord::PreparedStatementInvalid) { bind ':a', :a => 1, :b => 2 } # ' ruby-mode
- assert_nothing_raised { bind ':a :a', :a => 1 } # ' ruby-mode
- assert_raises(ActiveRecord::PreparedStatementInvalid) { bind ':a :a', :a => 1, :b => 2 } # ' ruby-mode
end
def test_bind_enumerable