diff options
-rw-r--r-- | activerecord/lib/active_record/validations/uniqueness.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/validations/uniqueness_validation_test.rb | 11 |
2 files changed, 13 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/validations/uniqueness.rb b/activerecord/lib/active_record/validations/uniqueness.rb index 2e2ea8c42b..2e2bcec922 100644 --- a/activerecord/lib/active_record/validations/uniqueness.rb +++ b/activerecord/lib/active_record/validations/uniqueness.rb @@ -54,7 +54,7 @@ module ActiveRecord def build_relation(klass, table, attribute, value) #:nodoc: column = klass.columns_hash[attribute.to_s] - value = column.limit ? value.to_s.mb_chars[0, column.limit] : value.to_s if column.text? + value = column.limit ? value.to_s.mb_chars[0, column.limit] : value.to_s if value && column.text? if !options[:case_sensitive] && value && column.text? # will use SQL LOWER function before comparison, unless it detects a case insensitive collation @@ -81,7 +81,7 @@ module ActiveRecord # # class Person < ActiveRecord::Base # validates_uniqueness_of :user_name, :scope => :account_id - # end + # end # # Or even multiple scope parameters. For example, making sure that a teacher can only be on the schedule once # per semester for a particular class. diff --git a/activerecord/test/cases/validations/uniqueness_validation_test.rb b/activerecord/test/cases/validations/uniqueness_validation_test.rb index 0f1b3667cc..8708117129 100644 --- a/activerecord/test/cases/validations/uniqueness_validation_test.rb +++ b/activerecord/test/cases/validations/uniqueness_validation_test.rb @@ -293,4 +293,15 @@ class UniquenessValidationTest < ActiveRecord::TestCase assert w6.errors[:city].any?, "Should have errors for city" assert_equal ["has already been taken"], w6.errors[:city], "Should have uniqueness message for city" end + + def test_allow_nil_is_false + Topic.validates_uniqueness_of(:title, :allow_nil => false) + Topic.destroy_all + + Topic.create!("title" => nil) + topic = Topic.new("title" => nil) + assert !topic.valid?, "topic should not be valid" + assert topic.errors[:title].any?, "Should have errors for title" + assert_equal ["has already been taken"], topic.errors[:title], "Should have uniqueness message for title" + end end |