当我将此SQL移动到不同的数据库适配器时,我遇到了问题。我想把它转换成更灵活的东西。这是:
Foo.includes([{ :group => :memberships }, :phone]).
where('("memberships"."user_id" = ? AND "memberships"."owner" = ?)
OR "phone"."user_id" = ?', user.id, true, user.id)
user
是当前用户(此查询位于CanCan能力文件中)。我们的想法是查询当前用户是foo组所有者的所有foo,或foo的手机归当前用户所有。
我尝试了很多不同的查询,但是我看不到正确的OR语法。因为这是CanCan能力,所以不可能组合两个查询,它们都需要在一个大范围内,如上所述。这可能吗?
群组成员资格通过联接表memberships
完成,所有者使用owner
字段指定。
class Foo
belongs_to :group
belongs_to :phone
end