この 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