ユーザーがアクセスできるプロジェクトのリストを返すスコープもあります。彼らは参加者リストに載っているか、リストされているプロジェクトを所有しています。SQLセーフではないことを除いて、クエリは正常に機能します。JOINを安全にする方法がわかりません。where句は安全ですが、joinで同じことを試みても機能しません。ここでドキュメントや回答が見つからないようです。私は基本的な何かが欠けていると思います。
scope :manageable_by_user, lambda { |user|
joins("LEFT JOIN participants ON
participants.project_id = projects.id
AND participants.user_id = #{user.id}").
where("projects.user_id = ? OR projects.user_id IS NOT NULL",user.id)
}