虽然总的来说我喜欢在我的数据库中区分大小写,但有几次我觉得它很痛苦。user_name 和 email 是我不想担心的字段的好例子——尤其是在搜索时。
在保存之前使用以下内容很容易将字符串小写:
before_save 做 self.email.downcase!结尾
这样,用户名和电子邮件始终以小写形式保存。但是 find_by_user_name 和 find_by_email 的最佳方法是什么?我当然可以记住总是将我传递给这些方法的字符串小写——但这似乎不是很干。
一旦我缩小电子邮件的大小写,我就考虑过覆盖 find_by_email 并用 super 调用原始文件,但我没有运气弄清楚这一点。
那么,最好的方法是什么?
PS 我不认为像这样的相关帖子(如何为 Rails 3 编写不区分大小写的 find_by_email)试图解决同样的问题。此处带有“较低”的自定义 sql 对我来说是毫无意义的,因为我已经确保所有这些值都较低 - 它是现在进入的那个(可能来自用户输入它的表单),我需要小写。