Rails 3 ActiveRecord에서 연관 개수별로 레코드 정렬
Rails 3에서는 has_many 연관을 활용하여 가장 인기 있는 레코드를 효과적으로 결정할 수 있습니다. 연결 수를 기준으로 합니다. 각 Listen이 노래에 속하는 관련 Listen 모델이 있는 노래 모델의 예를 생각해 보세요.
가장 많이 듣는 상위 5개 노래를 검색하려면 명명된 범위를 사용하여 노래 모델 내에서 범위를 정의할 수 있습니다.
class Song has_many :listens scope :top5, select("songs.id, OTHER_ATTRS_YOU_NEED, count(listens.id) AS listens_count"). joins(:listens). group("songs.id"). order("listens_count DESC"). limit(5) end
이 범위는 명명된 범위와 연결의 기능을 결합합니다. 각 노래별 청취 횟수를 계산하고, 그 횟수를 기준으로 내림차순으로 결과를 정렬하고, 가장 많이 듣는 상위 5곡으로 결과 집합을 제한합니다.
top5 범위를 활용하면 편리하게 간단한 쿼리를 사용한 가장 인기 있는 노래:
Song.top5 # top 5 most listened songs
위 내용은 has_many를 사용하여 Rails 3에서 가장 관련성이 높은 상위 N개 레코드를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!