如何将此SQL转换为ActiveRecord / Arel语法?

时间:2013-01-17 17:46:31

标签: sql ruby-on-rails ruby-on-rails-3 arel rails-activerecord

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

0 个答案:

没有答案