【发布时间】:2012-07-05 16:45:57
【问题描述】:
虽然总的来说我喜欢在我的数据库中区分大小写,但有几次我觉得它很痛苦。 user_name 和 email 是我不想担心的字段的好例子——尤其是在搜索时。
在保存之前使用以下方式将字符串小写很容易:
before_save 做 self.email.downcase! 结束
这样,用户名和电子邮件始终以小写形式保存。但是 find_by_user_name 和 find_by_email 的最佳方法是什么?我当然可以记住总是将我传递给这些方法的字符串小写——但这似乎不是很干。
我曾考虑过覆盖 find_by_email 并在我缩减电子邮件后使用 super 调用原始邮件,但我没有任何运气来解决这个问题。
那么,最好的方法是什么?
PS 我不认为像这样的相关帖子 (how can I write a case-insensitive find_by_email for Rails 3) 试图解决同样的问题。此处带有“较低”的自定义 sql 对我来说是毫无意义的,因为我已经确保所有这些值都较低 - 它是现在进入的那个(可能来自用户输入它的表单),我需要小写。
【问题讨论】:
标签: ruby-on-rails-3 activerecord find