按关联顺序created_at,如果没有关联,则由自己的created_at命令

时间:2012-11-28 12:19:39

标签: ruby-on-rails sorting associations

我的群组模型有很多帖子,帖子有很多评论。

当我在群组中显示帖子时,我想按照最新评论的创建时间排序,如果帖子上有任何帖子,或者帖子本身的created_at。

如果有一条新评论,那么旧帖子会跳回列表的顶部。

2 个答案:

答案 0 :(得分:4)

我会坚持采用一种不同的方法:Comment belongs_to :postbelongs_to接受:touch选项。将其设置为true,您的帖子updated_at将根据评论的修改自动更新。这样,您就可以自由地显示按其updated_at订购的帖子。

答案 1 :(得分:0)

您可以在posts表中添加commented_at:datetime列,然后将before_create回调添加到Post模型:

before_create :set_default_commented_at

def set_default_commented_at
  self.commented_at ||= Time.now
end

并添加:触摸到评论模型的belongs_to关联:

belongs_to :post, touch: :commented_at

毕竟你可以通过commented_at专栏订购。

相关问题