Zac*_*ack 3 regex activerecord ruby-on-rails
User我的rails应用程序中有一个标准型号.完成名字,姓氏,电子邮件等.我试图搜索符合特定条件的所有用户.
我知道我可以搜索特定的电子邮件地址,如下所示:
User.find_by_email('john@smith.com')
Run Code Online (Sandbox Code Playgroud)
但是,我想找到所有拥有Gmail地址的用户(例如).理想情况下,这将通过以下方式完成
User.find_by_email(/.*@gmail.com/)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.它给了我一个TypeError: Cannot visit Regexp.如何执行此活动记录搜索?
.find(_by)只返回第一场比赛.由于您要查找具有Gmail地址的所有用户,因此您需要使用该地址.where.
您可以轻松地将查询与某些正则表达式结合起来.Mysql和Postgres都支持这个:
User.where("email REGEXP ?", '.*@gmail.com')
Run Code Online (Sandbox Code Playgroud)
在您的特定情况下,您正在寻找以已知子字符串结尾的字符串:.*@gmail.com
你不需要正则表达式。搜索LIKE就足够而且更快:
User.where("email LIKE ?", '%@gmail.com')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4058 次 |
| 最近记录: |