如何訂購ActiveRecord的關係我有2種型號如下:基於列的最後一個記錄相關聯的對象
Client
has_many :cases
Case
belongs_to :client
讓說我有2個客戶端C1 C2 &。
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)
我想在最後一種情況的類型每個客戶端遞增/遞減的讓所有的客戶和訂單。 所以如果我通過asc命令,我應該有'c1'然後c2的結果。如果我用desc命令,我應該得到'c2'和'c1'的結果。以下是我到目前爲止所嘗試的。
Client.includes(:cases).order('cases.type asc') # => 'C2,C1'
Client.includes(:cases).order('cases.type desc') # => 'C2,C1'
由於C2也有類型的情況下,「正常」,我覺得它好像查詢首先找到客戶,然後像做client.cases。然後,我認爲它僅爲每個客戶下的案件下訂單,並且不會將案件交給客戶。
我覺得我的解釋有點混亂。如果你有問題,請給我一個問題。謝謝。
您是否嘗試過使用空數據庫的示例?我認爲它適用於rails 4.可能發生的是,在c2和c1兩種情況下都會返回,因爲具有相同'type'的記錄順序未定義。你用S型的'type'嗎?當您將名稱爲「type」的列用於STI以外的其他目的時,可能會產生不需要的副作用。 – slowjack2k
感謝@ slowjack2k您的評論。我更新了返回的結果,因爲之前它是我的錯誤。無論如何,我的問題是,我要麼升序或降序,結果是一樣的。另一方面,感謝提及使用'type'作爲列名稱的副作用。其實,我的專欄名稱是'case_type',但我只是以類型爲例,而我忘記了這一點。無論如何,我並沒有將它用於STI。 –