Ruby Rails多个类似字段和一般条件

时间:2017-11-23 01:35:48

标签: mysql ruby-on-rails activerecord

一直在挖掘几个小时。但是使用MySQL在rails活动记录中编写此查询的最佳和最短的方法是什么。

select * from users where (username like '%leonardo%' or  email like 
'%leonardo%' or name like '%leonardo%') and department = 'X'

所有的喜欢都在一个很大的范围内,应该与一个' X'部门。谢谢你们。

1 个答案:

答案 0 :(得分:0)

您可以在用户模型中询问每个属性:

User.where('users.username LIKE "%leonardo%" OR users.email LIKE "%leonardo%" OR users.name LIKE "%leonardo%" AND users.department_id = 1')

如果您只传递一个值来比较用户名,电子邮件和姓名:

User.where(
      'users.username LIKE :q OR 
       users.email LIKE :q OR 
       users.name LIKE :q AND 
       users.department_id = :dept',
       q: '%leonardo%', dept: 1
    )

否则你可以通过逐个传递它们来绑定它们。