2016-03-03 131 views
0
class Post 
    has_many :commments 
end 

class Comment 
    belongs_to :post 
end 

通過屬性順序的ActiveRecord對象我希望顯示的post創建(submitted_at)的日期排序的posts列表。我還想要一些post xyz出現在頂部,如果它有一些新的評論發佈,但尚未由主持人審查。我們將在註釋水平boolean屬性/場(主持= 1/0)Rails的:下的has_many關係

確定這個我試過

Posts.join(:comments) 
    .distinct 
    .order("submitted_at DESC, comments.moderated") 

,但這不包括那些沒有comments和預期結果進行排序的職位。我相信我們可以在ruby層面上做到這一點,但是尋找一種使用AR來做到這一點的方法。

+0

如何使用「包括」,而不是「加入」 – chaitanya

+0

可能是這將有助於http://stackoverflow.com/questions/3245201/left-outer-joins-in-rails-3 – chaitanya

回答

0

對於加入,使用此:

Posts.join("LEFT JOIN comments ON comments.post_id = posts.id") 

,其中將包括沒有評論的人。

你的排序似乎在暗示你想要的審覈的評論的計數,在這種情況下,試試這個:

.order("submitted_at DESC, COUNT(comments.moderated)") 

雖然,您可能需要以某種方式使用group了。

+0

我不需要計數。我只想要評論的帖子尚未在頂部進行審覈。可以算幫助我嗎? –

+0

啊。主持一個布爾型字段? –

+0

是的..但在數據庫中它按照軌道約定存儲爲0/1。 –