14

我有一个模型,它有两个字段,我将其称为 first_name 和 last_name,并且我想确保两者的组合是不区分大小写的唯一的。通过使用这个,我已经完成了一半:

validates_uniqueness_of :first_name, :scope => :last_name

问题是唯一性检查似乎是区分大小写的,即使文档说默认情况下它应该不区分大小写。所以给定一个现有的记录:

{ :first_name => 'John', :last_name => 'Smith' }

这将被允许:

{ :first_name => 'JOHN', :last_name => 'SMITH' }

以及在名字或姓氏中有任何大小写变化的任何附加记录。为什么允许这些记录?如何在两个字段中强制执行不区分大小写的唯一性?

4

1 回答 1

21

你试过了validates_uniqueness_of :first_name, :scope => :last_name, :case_sensitive => false吗?

文档说默认情况下是真的。

(我认为您提供的链接是一些过时的文档。IIRC,在过去几年中,默认值确实发生了变化。)

于 2010-02-06T23:53:50.527 回答