Rails validates_uniqueness_of跨多个列,不区分大小写

Jim*_*dra 14 scope ruby-on-rails case-insensitive validates-uniqueness-of

我有一个有两个字段的模型,我将其称为first_name和last_name,我想确保两者的组合不区分大小写.我已经在那里使用了这个:

validates_uniqueness_of :first_name, :scope => :last_name
Run Code Online (Sandbox Code Playgroud)

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

{ :first_name => 'John', :last_name => 'Smith' }
Run Code Online (Sandbox Code Playgroud)

这将是允许的:

{ :first_name => 'JOHN', :last_name => 'SMITH' }
Run Code Online (Sandbox Code Playgroud)

以及在名字或名字中有任何案例变异的任何其他记录.为什么允许这些记录?如何在两个字段中一起强制使用不区分大小写的唯一性?

Luk*_*ncl 21

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

文件说,它在默认情况下是真的.

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

  • https://github.com/jimmycuadra/morethingsneed.to/blob/67968671b9328d16628efad6793a5ddb5141807c/app/models/entry.rb#L54 (3认同)