我使用Rails 2.2.2和ruby 1.8.6进行开发。
如果没有评论,我想订购Topic
模型,该模型包含最新comments.created_at
或self.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插件。
答案 0 :(得分:2)
如果你正在使用MySQL,你可以这样订购:
:order => "IFNULL(comments.created_at, topics.created_at) DESC"
其他DBMS应该具有类似的功能。