【发布时间】:2018-01-11 16:54:50
【问题描述】:
我有一个 User 模型,其中包含许多 Events。每个event 有两个属性,name 和device。
我想获取至少有一个事件的所有users:
events.name = 'Logged in' AND events.device = 'iPhone'
并且至少有一个事件:
events.name = 'Upgraded' AND events.device = 'Desktop'
我正在遍历条件哈希,因此我还需要能够使用 ActiveRecord 范围执行 OR 语句,如下所示:
results = User.all
results = results.where("events.name = 'Logged in' AND events.device = 'iPhone'")
results = results.where("events.name = 'Upgraded' AND events.device = 'Desktop'")
上面的查询不起作用,因为它只查找符合所有条件的事件。
如何在 Rails 4 的 ActiveRecord 中编写此查询?
【问题讨论】:
-
制作它并尝试:
User.joins(:events).where("(events.name = 'Logged in' AND events.device = 'iPhone') OR (events.name = 'Upgraded' AND events.device = 'Desktop')") -
谢谢,阅读您的评论我意识到我没有指定一个关键要求,我已经更新了我的问题。
标签: ruby-on-rails activerecord