【发布时间】:2011-11-10 16:56:20
【问题描述】:
我正在尝试使用 arel 查询此 sql sn-p 的等效项:
WHERE (("participants"."accepted" = 'f' AND "participants"."contact_id" = 1)
OR "participants"."id" IS NULL)
所以我想要(accepted && contact_id=1) OR NULL
这就是我在 AREL 中得到的东西
participants[:accepted].eq(false).and(participants[:contact_id].eq(1).
or(participants[:id].is(nil)
问题是,这会生成:
("participants"."accepted" = 'f' AND "participants"."contact_id" = 1 OR "participants"."id" IS NULL)
请注意我的和条件周围没有括号。我相信,根据运算符的优先级,我得到:
accepted && (contact_id=1 OR NULL)
在 AREL 查询中添加括号没有影响。有什么想法吗?
【问题讨论】: