Rails 4에서는 다음을 수행합니다.
class Article < ActiveRecord::Base
has_many :comments, -> { order(created_at: :desc) }
end
class Comment < ActiveRecord::Base
belongs_to :article
end
A에 대한 has_many :through관계 인수 순서는 (은 두 번째 수있다) 중요한 :
class Article
has_many :comments, -> { order('postables.sort' :desc) },
:through => :postable
end
당신은 항상 어떤 상황을 중요한 순서대로 액세스 의견을 원하지 않을 경우 당신은 또한을 통해이 작업을 수행 할 수 있습니다 default_scope내에서 Comment같은 :
class Comment < ActiveRecord::Base
belongs_to :article
default_scope { order(created_at: :desc) }
end
그러나 이것은 이 질문에서 논의 된 이유 때문에 문제가 될 수 있습니다 .
Rails 4 이전 order에는 다음과 같이 관계에 대한 키로 지정할 수있었습니다 .
class Article < ActiveRecord::Base
has_many :comments, :order => 'created_at DESC'
end
Jim이 언급했듯이 sort_by 결과를 가져온 후에도 있지만 크기의 결과 집합에서는 SQL / ActiveRecord를 통해 주문하는 것보다 훨씬 더 느리고 더 많은 메모리를 사용합니다.
어떤 이유로 기본 주문을 추가하는 것이 번거로운 작업을 수행하거나 특정 경우에 기본값을 재정의하려는 경우 가져 오기 작업 자체에서 지정하는 것은 간단합니다.
sorted = article.comments.order('created_at').all