문제가 생겼습니다. 전에는 만나지 못했지만 어디서나 온라인 솔루션을 찾을 수없는 것 같습니다. 기본적으로 동일한 사용자 테이블을 참조하는 invited_by_id
열을 포함하는 사용자 테이블이 있습니다.레일 - 자체 참조로 주문
지금 그러나 정말로 테이블의 양쪽 때문에
User
.includes(:invited_by)
.order("users.name ASC")
작동하지 않습니다 여기 정렬 일반적인 액티브 레코드를 사용하여, 그것은 초대 사용자 이름을 기준으로 결과를 정렬하는 쿼리를 만들려고 해요 질문은 동일한 것이고, 레일스가 초대 한 것으로, 초대 된 _by가 아닙니다.
협회에서 주문하고 싶은 방법이 있습니까?
내가 활성 기록 믹스 인이를 사용하는 것을 시도하고있다, 그래서 기본 클래스에 직접 호출되지 않고,이 혼합 같은 기존 범위에서 작동 할 필요가
추가 정보 메서드가 범위에서 호출됩니다. 예컨대 여기
User
.includes(:invited_by)
.where(where_clause)
.sort(:invited_by_name, :asc)
들어 sort
방법은 믹스 인에 의해 제공되고,이 테이블을 구별 할 수 있어야하는 곳이다. 나는 그것이 관계가 무엇인지를 아는 것을 의미하는 논리를 가지고있어서, :invited_by_name
이 : invited_by 관계의 이름란임을 알고있다. 그러나 그것은 내가 가진 것까지이다.
기존 범위에서 작동합니까? 이 작업이 수행 될 곳은 믹싱 된 내부입니다. 따라서 사용자 모델이 아닌 기존 범위로 작업해야합니다. – PaReeOhNos
허, 아니요, 작동하지 않거나 시도하는 방법을 상상할 수 없습니다. Arel을 범위로 봤는데 쓸모있는 것을 못 보았습니다. 변경된 Arel 노드에 대한이 블로그 항목이 있지만 나는 당신에게 얼마나 도움이 될지 확신하지 못합니다 ... https://www.viget.com/articles/composable-sql-queries-in-rails-using-arel – SteveTurczyn
흠 그게 내 문제 야 : (계속 파고 갈거야. – PaReeOhNos