我在rails中创建基本论坛。我有一个有很多主题的论坛,而主题有很多帖子。我想为特定的论坛获取所有主题,并以这样的方式订购它们,即第一个主题是拥有最新Post的主题。根据子女的创建日期对对象进行排序
在我发布的信息库中有一个方法会返回最新的帖子。
def latest_post
order('created_at DESC').limit(1).first
end
在线程类我有返回最新帖子
def latest_post
self.posts.latest_post
end
我用下面的方式方法,以获得最新的职位线程的方法调用latest_post。
@some_thread.posts.latest_post
现在我想获得有序的线程列表。我试图给Thread类添加一个默认范围,以便默认命令它们。
default_scope order('latest_post.created_at DESC')
这没有奏效。我相信由于排序的latest_post部分不在数据库级别。
如何根据他们最新帖子的创建日期来订购主题。它不需要是默认排序。
感谢您的回复。这正是我所寻找的解决方案。我唯一关心的是效率。如果线程有很多帖子,这个方法是否会开始降速? – robinjohnobrien
sql内部连接会减慢它需要检索的发布行数,在这种情况下,缓存或其他列是更好的选择。 – tihom
好酷。非常感谢您的建议! – robinjohnobrien