1

두 개의 다른 모델을 결합하고 다른 연관된 모델을 통해 정렬하는 방법을 알고 싶습니다.레일 3 - 여러 모델 쿼리 및 정렬

말해봐 계정과 has_many CARS와 BIKES가 있고 두 가지 모두 휠셋에 대한 다형성 관계 (has_one)를 가지고 있다고 가정 해보십시오.

어떻게 주어진 계정에 대한 모든 자전거와 자동차를 선택하는 쿼리를 작성합니다,하고는 바퀴으로 분류 한 (또는 바퀴 모델에서 다른 열?)

Account 
has_many :cars, :bikes 

Bike 
belongs_to :account 
has_one wheelset, :as => wheelable 

Car 
belongs_to :account 
has_one wheelset, :as => wheelable 

Wheelset 
belongs_to :wheelable, :polymorphic => true 

내가 뭔가를 생각하고 있어요 다음과 같이 (불행히도 작동하지 않습니다)

a = Account.first 
sets = a.bikes.includes(:wheelset) + self.cars.includes(:wheelset) 
sets.order('wheelset.wheels ASC') 

어떤 도움이나 조언을 주셔서 감사합니다!

답변

3

표준 Ruby 배열을 빌드하고 배열 sort method을 사용하여 순서를 지정할 수 있습니다.

a = Account.first 
sets = Array.new 
sets += a.bikes + a.cars 
sets.sort! { |a, b| a.wheelable <==> b.wheelable } 

나는이 상황을 감안할 때 대략 어떻게 테스트 할 것인가?

+2

Dazzler! 잘 하셨어요. 비록 내가 생각하는 연산자는 <=> – sweetroll

+0

맞습니다. 작은 넷북에 있었어. 간신히 화면을 읽을 수 있을까요 : D/변명 –