如何在查找条件中通过self.created_at和children.created_at订购?

时间:2012-03-12 13:56:38

标签: ruby-on-rails ruby

我使用Rails 2.2.2和ruby 1.8.6进行开发。

如果没有评论,我想订购Topic模型,该模型包含最新comments.created_atself.created_at的许多评论。

#<Topic id: 1, :created_at: "2012-03-12-10:00:00">
#<Topic id: 2, :created_at: "2012-03-13-09:00:00">
   =>#<Comment topic_id: 2, :created_at: "2012-03-15-16:00:00">
#<Topic id: 3, :created_at: "2012-03-14-14:00:00">
   =>#<Comment topic_id: 3, :created_at: "2012-03-14-16:00:00">

# Order should be => Topic id 2,3,1

我已经写过通过两个顺序条件的条件,但是第一个条件下的顺序。

Topic.find(:all, :order=>"topics.created_at desc, comments.created_at desc",    :include=>"comments")

# Order is => Topic id 3,2,1

我知道sort_by很容易订购,但我想通过find方法中的order参数进行排序,因为我使用了paginating_find插件。

1 个答案:

答案 0 :(得分:2)

如果你正在使用MySQL,你可以这样订购:

:order => "IFNULL(comments.created_at, topics.created_at) DESC"

其他DBMS应该具有类似的功能。