我有一个主题模型和一个Post模型。主题有很多帖子,帖子属于主题。
我想根据每个主题的最新帖子显示主题的index
页面。最近的帖子是针对主题,它将在顶部显示更多。我基本上希望模拟常规论坛的作用。如果您回复主题,主题会在索引页面中出现。
所以我需要以某种方式为每个主题的最后一篇文章的* created_at *订购主题。怎么办呢?
topics_controller.rb
def index
@forum = Forum.find(params[:forum_id])
@topics = @forum.topics.find(:all, :order => "last_post_id DESC")
# last_post_id is a column of Topic that stores ID of the last post
end
post.rb
class Post < ActiveRecord::Base
belongs_to :topic
attr_accessible :content
end
topic.rb
class Topic < ActiveRecord::Base
has_many :posts, :dependent => :destroy
belongs_to :forum
accepts_nested_attributes_for :posts, :allow_destroy => true
attr_accessible :name, :last_post_id, :posts_attributes
end
答案 0 :(得分:3)
Topic.includes(:posts).order(&#39; posts.created_at DESC&#39;)
答案 1 :(得分:2)
我同意奥斯卡,但就你的情况而言,一定要考虑变量:
:updated_at
如果2年前创建了某些内容,然后在5分钟前更新了,则这对情况没有任何帮助。
Topic.include(:posts).order('posts.updated_at DESC')