1

我想知道如何加入兩個不同的模型,然後通過其他相關模型進行排序。Rails 3 - 多個模型查詢和排序

假設我有一個ACCOUNT,has_many CARS和BIKES,它們都與WHEELSET有多態關係(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

眩暈!工作很好。雖然我認爲運營商是<=> – sweetroll

+0

正確。是在一個小型的上網本。幾乎無法讀取屏幕:D /藉口 –