2011-04-21 4 views
0

일반적인 포럼 스타일의 앱이 있습니다. has_manyPostsTopics 모델이 있습니다.레일즈 activerecord 관련 테이블의 필드 별 주문

레일즈 2.3.x를 사용하여 내가하고 싶은 것은 토픽 테이블을 쿼리하고 그 토픽의 가장 최근 포스트별로 정렬하는 것이다.

@topics = Topic.paginate :page => params[:page], :per_page => 25, 
    :include => :posts, :order => 'HELP' 

나는 이것이 단순하지만 Google에는 별 도움이되지 않을 것이라고 확신합니다. 감사.

답변

1

가입 된 열을 정렬하는 것은 나쁜 생각 일 수 있으며 많은 상황에서 실행하는 데 엄청난 시간이 걸릴 것입니다. 무엇 좋을 것이다 것은 새로운 포스트가 생성 될 때 주제 모델에 특별한 날짜 필드를 만지작 거릴 것입니다 : 그럼 당신은 쉽게 정렬 activity_at 컬럼에 필요한 수

class Post < ActiveRecord::Base 
    after_create :update_topic_activity_at 

protected 
    def update_topic_activity_at 
    Topic.update_all({ :activity_at => Time.now }, { :id => self.topic_id}) 
    end 
end 

.

이 열을 추가 할 때 마이그레이션 할 기존 데이터가있는 경우 항상 가장 높은 게시 시간으로 activity_at을 채울 수 있습니다.

+0

감사합니다. 나는 내가 이와 비슷한 접근법을 필요로한다고 생각했다. – aaronrussell