我有一篇文章模型和评论模型。如何使用活动记录获得没有任何评论的文章列表?
模型列:
文章:O(n)
(有很多评论)
评论:body:string
,body:string
(属于文章)
答案 0 :(得分:2)
如果您想使用单个查询获取结果并希望结果为activerecord关系,请使用:
Article.where('id NOT IN (SELECT DISTINCT(article_id) FROM comments)')
答案 1 :(得分:1)
这是相同的,但更多的是铁路方式
Article.where.not('id IN (SELECT DISTINCT(article_id) FROM comments)')
答案 2 :(得分:0)
尝试下面的代码来获取所有没有评论的文章:
Article.includes(:comments).where.not(comments: {article_id: nil})
OR
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)