2012-03-12 2 views
1

私はRails 2.2.2とruby 1.8.6を使って開発しています。検索条件でself.created_atとchildren.created_atを注文する方法は?

私はコメントがない場合、最新のcomments.created_atまたはself.created_atにより多くのコメントがありTopicモデルを注文したいです。

#<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 

私は2階の条件を渡す条件を書いたが、最初の条件によってその順番ました。

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

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

私はpaginating_findプラグインを使用しているためsort_by注文するのは簡単ですが、私はfindメソッドに秩序パラメータで注文したいことを知っています。

答えて

2

MySQLを使用している場合は、このようにそれらを注文することができます:

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

他のDBMSには、同様の機能を持っている必要があります。

+0

ありがとうございました。 これは私が欲しいものです! – DIGITALSQUAD