의 마지막 기록의 열을 기반으로 액티브 관계를 주문합니다.
c1은 1 사례이고 c2는 2 사례입니다.
어떻게 아래로 두 모델을 가지고 관련 객체
c1 = Client.create(name: 'C1')
c2 = Client.create(name: 'C2')
case1 = Case.create(type: 'Normal', client: c1)
case2 = Case.create(type: 'Normal', client: c2)
case3 = Case.create(type: 'High', client: c2)
나는 각 클라이언트 오름차순/내림차순의 마지막 경우의 유형에 따라 모든 클라이언트 및 순서를 싶어. 내가 오름차순으로 주문하면 결과가 'c1'이고 그 다음에 c2가 있어야합니다. desc로 주문하면 'c2', 'c1'의 결과를 가져야합니다. 다음은 지금까지 시도한 것입니다. C2를도 '정상'타입의 케이스를 가지고 있기 때문에
Client.includes(:cases).order('cases.type asc') # => 'C2,C1'
Client.includes(:cases).order('cases.type desc') # => 'C2,C1'
, 나는 쿼리가 다음이 client.cases 같은 일을 할, 첫 번째 클라이언트를 찾는 것 같다 생각합니다. 그렇다면 각 고객의 경우에만 주문을한다고 생각하며 고객을 통해 사례를 주문하지 않습니다.
내 설명이 약간 혼란 스럽다고 생각합니다. 당신이 가진다면 나에게 질문을 남겨주세요. 감사.
빈 데이터베이스로 예제를 사용해 보셨습니까? 레일 4와 함께 작동한다고 생각합니다. 동일한 '유형'을 가진 레코드의 순서가 정의되어 있지 않기 때문에 두 경우 모두 c2, c1로 돌아갈 수 있습니다. STI에'type'을 사용합니까? STI보다 다른 목적으로'type'이라는 이름의 컬럼을 사용하면 원하지 않는 부작용이 생길 수 있습니다. – slowjack2k
Thanks @ slowjack2k 님의 의견입니다. 이전에 저의 실수였던 결과물을 업데이트했습니다. 어쨌든, 내 문제는 내가 오름차순이나 내림차순 중 하나를 주문한다는 것인데 결과는 같습니다. 반면 컬럼 이름으로 'type'을 사용하여 부작용을 언급 해 주셔서 감사합니다. 사실, 내 열 이름은 'case_type'이지만 예제로 type을 말하면서 그 점을 잊어 버렸다. 어쨌든 STI 용으로 사용하지는 않습니다. –