2016-01-11 92 views
0

我有兩個型號,postcommentRails的範圍加入

我需要一個post範圍稱爲in_use,其被定義爲在存在該帖子的評論。我相信這是完全簡單的,但我的頭腦是空白的!

,所以我需要能夠做到像

Post where post.comments.count > 0 

,但不知道如何在一個範圍內做到這一點?

回答

1
scope :in_use, -> { includes(:comments).where("post.comments <> ''") } 
+0

這是絕對不正確的SQL,將無法正常工作。 –

2

的最佳優化的方式做到這一點:

scope :in_use, -> { where("exists (select * from comments where post_id=posts.id)") } 

這將在任何RDBMS優化很好,如果查詢鏈接,它會優化。