不区分大小写的搜索mongoid中的单词

GTD*_*Dev 11 indexing ruby-on-rails case-insensitive mongoid

有没有办法在mongoid中为不区分大小写的搜索设置属性?

让我们说有人有一个用户名:IAmGreat我希望使用他们唯一的用户名来查找用户数据,而无需屠宰它并将其更改为iamgreat.

谢谢

Rob*_*eiz 49

实际上你可以搜索不区分大小写.但你必须用正则表达式搜索!以下是我在http://www.VersionEye.com中使用它的示例

User.first(conditions: {email: /^#{email}$/i})
Run Code Online (Sandbox Code Playgroud)

使用"/",您将开始和结束正则表达式.正则表达式后的"i"表示不区分大小写."^"表示元素必须以搜索字符串开头,"$"表示元素必须以搜索字符串结尾.如果您正在寻找完全匹配,这一点很重要.

  • 仅供参考:如果包含用户输入,您可能需要清理正则表达式:`/ ^#{Regexp.escape(email)} $/i` (13认同)
  • 用户 = 其中(电子邮件:/^#{电子邮件}$/i).first (3认同)

mru*_*ult 6

你甚至可以尝试这样的事情:

User.where(username: /#{username}/i).first
Run Code Online (Sandbox Code Playgroud)


jef*_*unt 1

User.login.downcase为什么在进行比较时不直接降低 a (或任何模型/属性组合)?这将使数据库中的大写保持不变,但将字段小写以供比较。