2016-03-03 127 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。 –