2017-07-26 40 views

回答

0

試試下面的代碼來獲取無評論所有文章:

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) 
+0

謝謝你的代碼片段,它可能會提供一些即時的幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

2

如果你想使用單查詢得到的結果,並希望得到的結果是一個ActiveRecord的關係,使用方法:

Article.where('id NOT IN (SELECT DISTINCT(article_id) FROM comments)') 
1

這是相同的,但會更軌way

Article.where.not('id IN (SELECT DISTINCT(article_id) FROM comments)')