当我将此 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