我有一篇文章模型和評論模型。如何獲得沒有使用活動記錄的任何評論的文章列表?如何檢查記錄是否不存在於具有活動記錄查詢的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)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –