0

この 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 アビリティにあるため、2 つのクエリを結合することはできません。上記のような 1 つの大きなスコープにすべてを含める必要があります。これは可能ですか?

グループ メンバーシップは結合テーブルを通じて行われmemberships、所有者はフィールドで指定されownerます。

class Foo
  belongs_to :group
  belongs_to :phone
end
4

0 に答える 0