我有一個Rails應用程序,它正在開發中使用Devise。我修改了它,遵循官方Devise文檔,使用用戶名而不是電子郵件地址。我也使用MySQL,而不是SQLite。Ruby on Rails - 設計登錄在生產中區分大小寫
登錄時,在開發中,我可以輸入「admin」作爲用戶「Admin」登錄。但在生產中,「管理員」不起作用,並要求我輸入區分大小寫的「管理員」。
我假設它是我的MySQL數據庫中的不同設置?
我有一個Rails應用程序,它正在開發中使用Devise。我修改了它,遵循官方Devise文檔,使用用戶名而不是電子郵件地址。我也使用MySQL,而不是SQLite。Ruby on Rails - 設計登錄在生產中區分大小寫
登錄時,在開發中,我可以輸入「admin」作爲用戶「Admin」登錄。但在生產中,「管理員」不起作用,並要求我輸入區分大小寫的「管理員」。
我假設它是我的MySQL數據庫中的不同設置?
我假設這裏的情況。如果是username
,請使用下面的代替login
。在您的設計初始,有一個設置:
config.case_insensitive_keys = [ :email ]
更改爲
config.case_insensitive_keys = [ :email, :login ]
這將:
這些密鑰將在創建或修改用戶downcased並用來當驗證或查找用戶。默認是:電子郵件。
因此,您可能需要更新管理員的登錄一次,但如果您輸入管理員或管理員,它將查找並進行身份驗證。
一般來說,我們會按照以下方式做一些事情。您可以檢查這是否是,你必須在名爲login
登錄的屬性,在管理用戶模型
validates :email,:presence => true,
:format => {:with=>email_regex,:message => "not a valid email"},
:uniqueness => {:case_sensitive => false}
有點遲到的反應,但感謝您的幫助!這對我來說很有用。非常感謝。 – Kobius