2017-08-31 45 views
0

我有一個模型叫extra。這裏看起來如何;Rails在哪裏,分類和組合相同的表

#<Extra id: nil, name: nil, price: nil, per: nil, compulsory: nil, online_payment: nil, payment_per_person: nil, is_included: nil, created_at: nil, updated_at: nil, user_id: nil> 

我想先按is_included對它們進行排序,它的確是這樣。然後我想排序compulsory是真的,最後compulsory是錯誤的。然後我想把它們結合起來。

基本上,我想分組他們,因爲用戶可以保存他們無序。然後刪除任何人存在兩次。

我可以在視圖或before_save回調函數上執行嗎?

感謝

回答

2

Extra.order('is_included desc, compulsory desc')將返回你想要的結果,你永遠不應該對視圖執行SQL查詢。

+0

你也可以通過排序desc來解釋它是如何工作的,而不會將真或假? –

+1

這是一個[鏈接](https://dba.stackexchange.com/questions/8504/why-are-nulls-sorted-first),它會給你一個想法。 在sql中,true和false值存儲爲1和0.因此,按**降序排列'is_included'將按降序對附加項進行排序,然後對**結果**進行排序,並使用強制屬性降序會給你最終的結果。 我與您分享的鏈接將幫助您瞭解使用布爾值對空值進行排序。 –