2012-03-12 1 views
1

레일즈 2.2.2와 루비 1.8.6으로 개발 중입니다.find 조건에서 self.created_at 및 children.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 

나는 두 가지 순서 조건을 통과하지만 첫 번째 조건에 의한 순서를 썼다.

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

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

나는 sort_by 주문하기 쉽다는 것을 알고,하지만 난 paginating_find 플러그인을 사용하기 때문에 찾기 방법 주문 매개 변수에 의해 주문하고 싶다. 당신이 MySQL을 사용하는 경우

답변

2

,이처럼 그들을 주문할 수 있습니다

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

다른 DBMS와 비슷한 기능을 가지고 있어야합니다.

+0

정말 고마워요. 이것이 내가 원하는 것입니다! – DIGITALSQUAD

관련 문제