我想一個特定的順序對我的模型庫的數據進行排序。排序模型
Model: Grade
Table Column: category, value
values of category: Prelim, Midterm, Semi-finals, Finals
我該如何對錶格進行排序,基於它的類別,其值爲「Prelim,Midterm,Semi-Finals,Finals」?
我想一個特定的順序對我的模型庫的數據進行排序。排序模型
Model: Grade
Table Column: category, value
values of category: Prelim, Midterm, Semi-finals, Finals
我該如何對錶格進行排序,基於它的類別,其值爲「Prelim,Midterm,Semi-Finals,Finals」?
如果你不想通過在表格中的數字來取代他們的建議:
1 = Prelim
2 = Midterm
3 = Semi-finals
4 = Finals
,然後在模型中這樣對它們進行排序通過@titibouboul。你可以做。
class Grade
CATEGORY_IN_ORDER = ["Prelim", "Midterm", "Semi-Finals", "Finals"]
scope :ordered_by_category, lambda {"order(FIELD(category,#{CATEGORY_IN_ORDER.join(',')}))"}
end
那麼任何地方,你可以使用這個範圍爲:
Grade.ordered_by_category.where(YOUR_CRITERIA)
如果你不想定義範圍:
通過現場語法這裏Grade.where(YOUR_CRITERIA).order("FIELD(category,#{CATEGORY_IN_ORDER.join(',')})")
更多關於順序: http://www.electrictoolbox.com/mysql-order-specific-field-values/
你應該通過一些替換它們:
class Grade
...
default_scope -> { order('category ASC') }
...
end
前期,中期,半決賽和決賽是類別的價值,所以我不會放棄e現在改變它們。 – fujisan
我不建議使用default_scope:http://rails-bestpractices.com/posts/806-default_scope-is-evil –
default_scope已經得到了Rails中4少蹩腳,備案。 – sevenseacat
我如何使它工作on Rails的2.3 – fujisan
@fujisan我不認爲這是相關的軌道版本。剛剛嘗試'Grade.where( 「類不爲空」)。爲了( 「FIELD(類別,#{CATEGORY_IN_ORDER.join( '')})」)'。它的純粹的mysql語法。 –
我已經將它用作我的默認範圍。再次感謝您的解決方案。 – fujisan