为什么Rails 4.2.6唯一性:true,case_sensitive:true失败?

时间:2017-01-05 17:11:42

标签: ruby-on-rails ruby

我有一个简单的测试来执行。以下是以下代码:

  it 'should validate that email is lowercase' do
    account = build(:account, email: 'IRONMAN@gmail.com')
    lowercase_account = build(:account, email: 'warmachine@gmail.com')
    account.wont_be :valid?
    lowercase_account.must_be :valid?
  end

根据我的测试,IRONMAN@gmail.com应该失败并且warmachine@gmail.com应该通过。但是,当我运行测试时,两封电子邮件都通过了。

以下是我的Account模型的验证码。

validates :email, presence: :true, length: { in: 3..100 }, uniqueness: true,
                  confirmation: true, email_format: true, allow_blank: false
validates :email_confirmation, email_format: true, presence: true, allow_blank: false, on: :create

这里的错误是什么?我已在SO上引用此链接作为起点Rails 4 validation case insensitivity test。它有一些很好的信息,但我使用Postgresql而不是MySQL来执行帐户插入。据我所知,Postgresql没有进行不区分大小写的搜索,所以我应该很好。有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:2)

区分大小写并不意味着所有内容都必须小写才有效,这意味着您可以收到两封​​电子邮件,例如hello@example.comHELLO@example.com

如果区分大小写设置为false,则您无法hello@example.comHELLO@example.com