2011-04-21 47 views
0

我有一個典型的論壇風格的應用程序。有一個Topics型號,其中has_manyPostsRails的activerecord按相關表中的字段排序

我想使用Rails 2.3.x做的事情是查詢主題表並按照該主題中的最新帖子排序。

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

我敢肯定,這是一個簡單的問題,但沒有Google的喜悅。謝謝。

回答

1

在連接列上排序可能是一個糟糕的主意,在很多情況下需要大量的時間來運行。什麼是更好的是玩弄在主題模型中的特殊日期字段創建一個新的職位時:

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

+0

謝謝。我懷疑我可能需要更像這樣的方法。 – aaronrussell 2011-04-27 13:44:17