Ruby on Rails - 设计登录在生产中区分大小写

时间:2012-07-03 13:09:03

标签: mysql ruby-on-rails devise

我有一个在开发中完美地使用Devise的rails应用程序。我已经修改了它,遵循官方Devise文档使用用户名而不是电子邮件地址。我也使用MySQL而不是SQLite。

登录时,在开发中,我可以输入“admin”作为用户“Admin”登录。但在生产中,“admin”不起作用,并要求我键入区分大小写的“Admin”。

我假设我的MySQL数据库中有不同的设置?

2 个答案:

答案 0 :(得分:3)

我在这里假设你有一个名为login的登录属性。如果是username,请使用下面的代码而不是login。在您的Devise初始化程序中,有一个设置:

config.case_insensitive_keys = [ :email ]

更改为

config.case_insensitive_keys = [ :email, :login ]

这将:

  

这些密钥将在创建或修改用户时以及用于验证或查找用户时下调。默认为:电子邮件。

因此,您可能需要更新管理员的登录一次,但如果您输入管理员或管理员,它将会找到并进行身份验证。

答案 1 :(得分:0)

一般来说,我们会以下列方式做事。您可以检查AdminUser模型中是否属于这种情况

validates :email,:presence => true,
    :format => {:with=>email_regex,:message => "not a valid email"},
    :uniqueness => {:case_sensitive => false}