ActiveRecord会自动小写名为“username”的列吗?

时间:2016-04-12 00:25:01

标签: ruby-on-rails activerecord

我有一个名为username的数据库表列,其中包含唯一索引。我注意到用户名在发送到数据库之前是小写的。这是ActiveRecord吗?我可以把它关掉吗?我可以为不同命名的列启用它吗?

1 个答案:

答案 0 :(得分:0)

问题出在这一行

https://github.com/plataformatec/devise/blob/29142418bade74224d98bbf5bbcadfba181d5db9/lib/devise/models/authenticatable.rb#L198

您需要将用户名字段保留在设计初始值设定项中的case_insensitive_keys列表之外。这是“干净”的方式。

脏的方法是“覆盖”该方法并指定数据库中您想要的实际区分大小写的密钥。

我不建议您绕过或覆盖它,在列出这些属性的案例背后有一个逻辑或原因,但如果您的应用程序真的需要它继续。