leo*_*nel 2 ruby activerecord ruby-on-rails
我有这个查询,但它没有给我预期的结果:
User.all(:conditions => ["company_id == ? AND role_id == ? OR role_id == ? OR role_id == ?", X, 1,2,3 ])
它应该意味着:使用X company_id获取所有用户,并且他们的角色可以是1或2或3.
所以它可以是这些角色中的任何一个,但所有这些用户都必须来自THAT company_id.
小智 5
它不起作用,因为优先级是错误的.那是,
company_id = ? AND role_id = ? OR role_id = ? OR role_id = ?
Run Code Online (Sandbox Code Playgroud)
被解释为
((company_id = ? AND role_id = ?) OR role_id = ?) OR role_id = ?
Run Code Online (Sandbox Code Playgroud)
因为AND的优先级高于OR - 但与这种情况更相关 - 它们都是左向关联的.
因此,简单的解决方案是:
company_id = ? AND (role_id = ? OR role_id = ? OR role_id = ?)
Run Code Online (Sandbox Code Playgroud)
(但是请参阅其他语法和/或方法的其他答案.我也冒昧地修复了相等运算符.)
快乐的编码.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |