aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorTom Ward <tom@popdog.net>2008-07-19 09:58:09 +0100
committerPratik Naik <pratiknaik@gmail.com>2008-07-19 16:14:39 +0100
commitf2059393481ceb632abc7a9d92670e409020d5bd (patch)
tree42dc11440ca28e59d2c49b9e2bde61ee98ce23e1 /activerecord
parentcab168ac9bbe24e5842fb7677d3fac820ddbc18c (diff)
downloadrails-f2059393481ceb632abc7a9d92670e409020d5bd.tar.gz
rails-f2059393481ceb632abc7a9d92670e409020d5bd.tar.bz2
rails-f2059393481ceb632abc7a9d92670e409020d5bd.zip
Ensure checked value is a string when validating case-sensitive uniqueness [#361 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'activerecord')
-rwxr-xr-xactiverecord/lib/active_record/validations.rb2
-rwxr-xr-xactiverecord/test/cases/validations_test.rb9
2 files changed, 10 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/validations.rb b/activerecord/lib/active_record/validations.rb
index 3eec1305e4..b957ee3b9e 100755
--- a/activerecord/lib/active_record/validations.rb
+++ b/activerecord/lib/active_record/validations.rb
@@ -664,7 +664,7 @@ module ActiveRecord
# As MySQL/Postgres don't have case sensitive SELECT queries, we try to find duplicate
# column in ruby when case sensitive option
if configuration[:case_sensitive] && finder_class.columns_hash[attr_name.to_s].text?
- found = results.any? { |a| a[attr_name.to_s] == value }
+ found = results.any? { |a| a[attr_name.to_s] == value.to_s }
end
if found
diff --git a/activerecord/test/cases/validations_test.rb b/activerecord/test/cases/validations_test.rb
index 60b00b3e8f..4b2d28c80b 100755
--- a/activerecord/test/cases/validations_test.rb
+++ b/activerecord/test/cases/validations_test.rb
@@ -477,6 +477,15 @@ class ValidationsTest < ActiveRecord::TestCase
assert_not_equal "has already been taken", t3.errors.on(:title)
end
+ def test_validate_case_sensitive_uniqueness_with_attribute_passed_as_integer
+ Topic.validates_uniqueness_of(:title, :case_sensitve => true)
+ t = Topic.create!('title' => 101)
+
+ t2 = Topic.new('title' => 101)
+ assert !t2.valid?
+ assert t2.errors.on(:title)
+ end
+
def test_validate_uniqueness_with_non_standard_table_names
i1 = WarehouseThing.create(:value => 1000)
assert !i1.valid?, "i1 should not be valid"