在Rails中,如何允许用户在其用户名中使用大写字母(如GreatestOneEver),但在搜索时仍然具有大小写不敏感(如User.find_by_username“mostoneever”)或执行其他任务?基本上,我希望我的用户看到他们的用户名看起来大写,但在幕后,在所有代码中使用较低的套件版本。
我有一个想法:在模型中添加一个新字段,名为display_name或者其他东西。还有更好的方法吗?
编辑: 我不想使用正则表达式或其他东西进行搜索,因为这样效率很低。我真的需要用户名索引!但是也有不区分大小写的查找。也许display_name是最好的主意?
答案 0 :(得分:1)
这是一种可能性
name = "GreatestOneEver"
User.find(:first, :conditions => [ "lower(name) = ?", name.downcase ])
但是,我猜你是否在搜索不区分大小写,那么你可能会得到多个结果。所以你可以删除:first。
答案 1 :(得分:0)
尝试humanize
如果您的字符串带有下划线(_),则可能有效。或者对于搜索过程,尝试使用正则表达式:
{username: /#{Regexp.escape(search)}/i}
搜索是你的价值。