投稿とコメントのモデルがあります 投稿has_many:commetns コメントbelongs_to:投稿 特定のユーザーからのコメント付きのすべての*投稿を取得したいと思います。Railsフィルタ関連のレコード
Post.all.includes(:comments).where('comments.post_id IS NULL OR comments.user_id = ?' id).references(:comments)
それはフィルタ:私はのようなものを試してみました今の (私は(コメントなしでもこれらのもの)すべての単一のポストを取得し、特定のユーザーによって作成されたこれらのコメントをフィルタしたい)
私が欲しいものを投稿コメントは出ますが、場合にポストが除外以外のコメントが何を持っていない、それは
それとも
Post.all.joins('LEFT JOIN comments c ON c.post_id = posts.id AND c.user_id = ' + sanitize(id))
(明らかにそれはwhere句...によって拒否された)この記事を返しません
すべての投稿が返されますが、除外は機能しません。
ご質問は今、非常に不明瞭であるRailsの関連付けをプリロードについての優れた記事を見つけることができます'Post'sが除外されると不平を言う。あなたの意図した結果は、特定のユーザからのコメントとコメントのないすべての 'Post's、または' Post'sと 'User'のコメントのみを含む' Post'sですか? – engineersmnky
私はすべての投稿をしたい、私はコメントではなく、投稿をフィルタリングしたい。したがって、すべての投稿と特定のユーザからのコメント –
これは、インスタンスレベルの詳細が含まれているため、単一のメソッドチェーンで実行できます。 (post.comments.user_id)は、一般にプリロードできないことを意味します。すべての投稿を読み込んだ後にすべてのユーザーのコメントを読み込み、コード内でこれを処理するほうが簡単かもしれません。 – engineersmnky