0

在 Rails 中,如何允许用户在其用户名中包含大写字母(例如 GreatestOneEver),但在搜索(例如 User.find_by_username "greatestoneever")或执行其他任务时仍然不区分大小写?基本上,我希望我的用户看到他们的用户名看起来大写,但在幕后,在所有代码中使用小写版本。

我有一个想法:向模型添加一个新字段,称为 display_name 或其他名称。有没有更好的办法?

编辑:我不想使用正则表达式或其他东西进行搜索,因为那效率低下。我真的需要按用户名索引!但是也有不区分大小写的查找。也许 display_name 是最好的主意?

4

2 回答 2

1

这是一种可能性

name = "GreatestOneEver"
User.find(:first, :conditions => [ "lower(name) = ?", name.downcase ])

但是我猜如果您搜索不区分大小写,那么您可能会得到多个结果。因此,您可以删除 :first。

于 2013-03-15T07:59:45.237 回答
0

humanize如果您的字符串带有下划线(_)或对于搜索过程尝试,请尝试以下正则表达式:

{username: /#{Regexp.escape(search)}/i}

搜索是您的价值所在。

于 2013-03-15T07:56:35.507 回答