has_many를 사용하여 Rails 3에서 가장 관련성이 높은 상위 N개 레코드를 찾는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-28 04:54:11
원래의
817명이 탐색했습니다.

How to Find the Top N Most Associated Records in Rails 3 using has_many?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿