게시물 has_many이 댓글 마지막 코멘트 날짜별로 게시물을 주문합니다. 따라서 각 게시물의 가장 최근 코멘트로 주문한 명명 된 범위를 원합니다.named_scope 내가 이름 범위로 주문합니다 <a href="http://github.com/binarylogic/searchlogic" rel="nofollow noreferrer">searchlogic</a>을 사용하고</p> <p>
named_scope :ascend_by_comment, :order => ...comments.created_at??...
나는 가장 최근의 코멘트와 종류의 created_at
필드함으로써, named_scope
의 모든 :joins
을 얻을하는 방법을 모르겠어요.
mysql, fyi를 사용하고 있습니다.
편집 : 이것은 내가 모방하려고 할 것 SQL 쿼리입니다
:
SELECT tickets.*, comments.created_at AS comment_created_at FROM tickets
INNER JOIN
(SELECT comments.ticket_id, MAX(comments.created_at) AS created_at
FROM comments group by ticket_id) comments
ON tickets.id = comments.ticket_id ORDER BY comment_created_at DESC;
나는 가장 단순한 경우를 생각하고있었습니다. 나는 INNER JOIN에서 일하는 사람을 얻은 후에 LEFT JOIN으로 전환 할 수 있다고 생각했습니다. 또한 이것은 헬프 데스크를위한 것이며 모든 "게시물"에는 초기 "주석"이 있으므로이 경우에는 내부 조인을 사용해도됩니다. – wesgarrison
나는 다른 사람이 commment.id도 가져 오기를 원할 경우를 대비해': group => "posts.id"'를 추가했습니다. searchlogic 및 will_paginate와 완벽하게 작동합니다. – wesgarrison