如何通过创建帖子的最后一个人来订购主题?

如何通过创建帖子的最后一个人来订购主题?

问题描述:

我有一个主题列表,我想按最后发布的顺序显示所有主题。我认为当你最近点击按钮时,话语会使用类似的东西。如何通过创建帖子的最后一个人来订购主题?

我试着这样做

@topics = Topic.includes(:posts).order("posts.created_at desc") 

,但我的主题以一种奇怪的顺序得到。

我会用scopes只是因为它很好地概括了搜索功能到类它可以在其他地方重复使用。

class Post < ActiveRecord::Base 
    scope :descending, ->() { order(arel_table[:created_at].desc) } 
end 

class Topic < ActiveRecord::Base 
    # reuse the descending scope from the Post class to define an 
    # order on the Topic class 
    scope :descending, ->() { 
    joins(:posts).merge(Post.descending) 
    } 

end 

然后,你可以这样做:

@topics = Topic.descending 

如果你也想在查询职位你仍然可以做:

@topics = Topic.descending.includes(:posts) 

您必须使用“连接”,而不是“包括”

@topics = Topic.joins(:posts).order("posts.created_at desc") 

您可以检查这里的解释:https://stackoverflow.com/a/6577085/1932629