私は記事モデルとコメントモデルを持っています。アクティブなレコードを使用してコメントを持たない記事のリストを取得するにはどうすればよいですか?レコードがアクティブなレコードのクエリでRails 5に存在しないかどうかをチェックする方法は?
モデル列:
記事:body:string
(多くのコメントがあります)
コメント:body:string
、article_id:integer
は(記事に所属)
私は記事モデルとコメントモデルを持っています。アクティブなレコードを使用してコメントを持たない記事のリストを取得するにはどうすればよいですか?レコードがアクティブなレコードのクエリでRails 5に存在しないかどうかをチェックする方法は?
モデル列:
記事:body:string
(多くのコメントがあります)
コメント:body:string
、article_id:integer
は(記事に所属)
コメントはありませんとのすべての記事を取得するためにコードの下に試してみてください。
Article.includes(:comments).where.not(comments: {article_id: nil})
または
data = []
Article.all.each do |a|
data << a if a.comments.blank?
end
puts data
OR
ids = Comment.all.pluck(:article_id)
data = Article.where.not(id: ids)
あなたは、単一のクエリを使用して結果を取得したいと結果はActiveRecordの関係になりたい場合は、使用:
Article.where('id NOT IN (SELECT DISTINCT(article_id) FROM comments)')
これは同じですが、よりレールだろうway
Article.where.not('id IN (SELECT DISTINCT(article_id) FROM comments)')
このコードスニペットをありがとうございました。すぐに役立つかもしれません。適切な説明は、なぜ*これが問題の良い解決策であるかを示すことによってその教育上の価値を大幅に改善し(// meta.stackexchange.com/q/114762)、将来の同様の、しかし、同一ではない質問。説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –