我有一个典型的论坛风格的应用程序。有一个Topics
模型has_many
Posts
。
使用Rails 2.3.x我想要做的是查询主题表并按该主题中最新的帖子排序。
@topics = Topic.paginate :page => params[:page], :per_page => 25,
:include => :posts, :order => 'HELP'
我确信这是一个简单的,但没有谷歌的喜悦。感谢。
答案 0 :(得分:1)
对已连接的列进行排序可能是一个坏主意,并且在许多情况下需要花费大量时间才能运行。更好的方法是在创建新帖子时在Topic模型上旋转特殊日期字段:
class Post < ActiveRecord::Base
after_create :update_topic_activity_at
protected
def update_topic_activity_at
Topic.update_all({ :activity_at => Time.now }, { :id => self.topic_id})
end
end
然后,您可以根据需要轻松对activity_at
列进行排序。
添加此列时,如果您要迁移现有数据,则始终可以使用最高发布时间填充初始activity_at
。