Rails activerecord按相关表中的字段顺序排序

时间:2011-04-21 17:01:43

标签: mysql ruby-on-rails sorting activerecord sql-order-by

我有一个典型的论坛风格的应用程序。有一个Topics模型has_many Posts

使用Rails 2.3.x我想要做的是查询主题表并按该主题中最新的帖子排序。

@topics = Topic.paginate :page => params[:page], :per_page => 25,
  :include => :posts, :order => 'HELP'

我确信这是一个简单的,但没有谷歌的喜悦。感谢。

1 个答案:

答案 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