提交 5a4cdf9c 编写于 作者: P pyromaniac

Fixed nil field value uniqueness check

上级 432a95d8
......@@ -52,13 +52,13 @@ def find_finder_class_for(record) #:nodoc:
def build_relation(klass, table, attribute, value) #:nodoc:
column = klass.columns_hash[attribute.to_s]
value = column.limit ? value.to_s[0, column.limit] : value.to_s if column.text?
value = column.limit ? value.to_s[0, column.limit] : value.to_s if !value.nil? && column.text?
if !options[:case_sensitive] && value && column.text?
# will use SQL LOWER function before comparison, unless it detects a case insensitive collation
relation = klass.connection.case_insensitive_comparison(table, attribute, column, value)
else
value = klass.connection.case_sensitive_modifier(value)
value = klass.connection.case_sensitive_modifier(value) unless value.nil?
relation = table[attribute].eq(value)
end
......
......@@ -45,6 +45,18 @@ def test_validate_uniqueness
assert t2.save, "Should now save t2 as unique"
end
def test_validates_uniqueness_with_nil_value
Topic.validates_uniqueness_of(:title)
t = Topic.new("title" => nil)
assert t.save, "Should save t as unique"
t2 = Topic.new("title" => nil)
assert !t2.valid?, "Shouldn't be valid"
assert !t2.save, "Shouldn't save t2 as unique"
assert_equal ["has already been taken"], t2.errors[:title]
end
def test_validates_uniqueness_with_validates
Topic.validates :title, :uniqueness => true
Topic.create!('title' => 'abc')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册