按照孩子在一对多关系中的价值排序

时间:2011-02-01 19:32:45

标签: ruby-on-rails activerecord

发布表

int id

评论表

int id
int post_id
datetime created_at

我需要通过帖子的评论created_at来订购帖子。我尝试了类似的东西,但我不能选择明显的帖子ID。任何帮助将不胜感激。

Post.all(:joins => :comments, :order => 'comments.created_at')    

我希望看到最近评论过的帖子。

1 个答案:

答案 0 :(得分:0)

您传递的条件无效。 您可以通过在帖子表中添加一列来说明最简单的方法,即last_commented_at。 在您的Comment模型中添加回调

class Comment < ActiveRecord::Base
  belongs_to :post

  after_save :update_posts_last_commented_attribute

  def update_posts_last_commented_attribute
    post.update_attribute(:last_commented_at, updated_at)
  end
end

然后你可以通过调用

加载你的帖子
Post.order("last_commented_at DESC" )

首先显示帖子,最近已评论过。

相关问题