(실제 숫자는 더 큰 100 배, 그러나 그 다음과 같이 설명하기 쉽게) 우리는 100의 기록 세트가레일 3 + 활성 기록 : 영리한 방법을 "라운드 로빈"기록의 순서가
을 5 개 레스토랑에 대한 리뷰. 일부 레스토랑은 3 또는 4 리뷰를 가지고, 일부는 20-30 리뷰를했습니다.
@reviews = Review.joins(:store).
where('reviews.published= ?',true).
order("reviews.created_at DESC")
내 보고서보기 중 하나를 들어, 나는 각 레스토랑을 보장 라운드 로빈 순서로 리뷰를 표시 할 필요가 동일한 범위를 가져옵니다
현재 내가 가장 오래된에 최신에서 그들을 주선 간단한 보고서를 목록 상단에most recent for restaurant #A
most recent for restaurant #B
...
most recent for restaurant #E
는, #A, #B을위한 다음 - 가장 최근에 대한 반복 ... #E
등
가 이상적으로 라운드 로빈의 순서는 레스토랑이있는 것 가장 총 리뷰.
코드에서 느린 방식으로 수행하는 것이 어렵지는 않지만 더 빠르고 능동적 인 접근 방법이 있는지 궁금합니다.
===
레스토랑에 의해 (a) 분류, (b), 각 레스토랑의 각 항목에 대해 1 내지 N 카운트 임시 "카운터"열 생성 (C)에 재 방법 있는가 그 카운터 열에 정렬? 그렇게 할 것입니다.
예를 들어, 이후에 (a) 및 (b) 상기 레코드
A , <some review>, 1
A , <some review>, 2
...
A , <some review>, 23
B , <some review>, 1
B , <some review>, 2
...
B , <some review>, 11
C , <some review>, 1
C , <some review>, 2
...
C , <some review>, 9
될 경우 I 수 후 정렬은 것 카운터 레코드 집합이 라운드 로빈 등의 B, C,
재미있는 아이디어를 업데이트하지 않아도됩니다 이런 식으로 방법은 대략 질문에 설명 된대로 SQL 카운터를 구현합니다. 실제 트릭은 will_paginate를 사용하여 보고서를 페이지에 게시하고 쿼리를 다시 호출하는 링크를 클릭 할 때마다 많은 스키마가 손상된다는 것입니다. – jpwynn