我正在尝试使用regexp通过where子句查找一些结果。但结果正如预期的那样。任何帮助都将非常感激。
用户名为asha123
数据库查询
User.where('username REGEXP ?', /(asha|asha)/)
结果
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE (username REGEXP '--- !ruby/regexp /(asha|asha)/\n...\n')
=> #<ActiveRecord::Relation []>
答案 0 :(得分:2)
传入字符串而不是ruby正则表达式。例如:
User.where('username REGEXP ?', '(asha|asha)')
虽然您的数据库需要“正则表达式”,但ActiveRecord
不是 - 它只是想用字符串值替换?
。
更新:使用变量:只需在双引号内使用常规变量插值。假设您有first_name
和last_name
个变量:
User.where('username REGEXP?',“(#{first_name} |#{last_name})”)