2014-09-23 31 views
0

我確定這是使用數據庫的常見問題,但我試圖在Rails中設置ActiveRecord數據庫(儘管我認爲這適用於大多數數據庫系統),以便我可以基於在我分配給某些字符串的值上。在Rails中通過字符串'給定值'對ActiveRecord數據庫中的值進行排序的最佳實踐?

例如,我想基於

Common 
Less Common 
Moderate 
Rare 
None 

我能想到的幾個方法可以做到這訂購的物品,但每一個最終似乎有些凌亂。我希望這是一個普遍的問題,以至於已經建立了一個最佳實踐來解決這個問題。

+0

你如何計劃值分配給字符串? – settheline 2014-09-23 04:35:37

+0

例如:'Common'可能是5,'Less Common'4 ...沒有'0',所以當我排序時,Common將位於頂部,None不會位於底部。 – cchapman 2014-09-23 04:51:59

回答

1

它看起來像你需要enum

enum status: [:none, :rare, :moderate, :less_common, :common] 

後,你將有一個像item.none?一些方法,item.status #=> none等 對於使用枚舉,你應該在你的表中創建integer域,每一個狀態將被保存如整數none -> 0,rare -> 1等。此外,您可以明確地映射屬性和數據庫整數之間的關係。

對於在這種情況下,按狀態排序,你可以這樣寫:

YourModel.all.order(:status) 
相關問題