2011-10-27 96 views
4

我目前正在尋找一個適當的Rails枚舉枚舉。Rails枚舉:字符串或整數列?

我已經嘗試過

  • enum_simulator
  • has_enum

    1. 都使用字符串列在數據庫中存儲數據的枚舉。 整數列不會有更好的性能或更少的存儲消耗(使用MySQL)嗎?
    2. 有沒有可以做到這一點的寶石?

非常感謝!

更新: 我發現它使用整數值來表示數據庫中的枚舉的simple_enum寶石。它支持導軌3.1並且維護良好。

回答

4

紅寶石工具箱是你的朋友。 https://www.ruby-toolbox.com/categories/Active_Record_Enumerations

我一直在使用enumerated_attribute與Rails 2.3和Rails 3都有很好的效果。是的,它使用一個字符串列。

IMO字符串列比整數列更好,因爲它們不暗示任何值的順序,並且使屬性更容易理解(反向工程,如果你想的話)而無需查看源代碼。通常情況下,性能差異可以忽略不計,特別是如果你有一個領域的指數 - 你應該。

使用MySQL enum領域的Rails 2.3已經被證明覆雜,麻煩的模式,不知道是否在Rails的持續3.

+0

非常感謝!我會看看它。 如果枚舉中有很多冗餘值,您知道MYSQL是否壓縮字符串列的數據嗎? – alex

+0

@alex,我不這麼認爲,因爲這就是'enum'的用途。順便說一句,不要忘記註冊。 –

+0

好的,謝謝...我會做一些進一步的研究。我很抱歉,但我目前還沒有足夠的聲望來進行增票,但我一定會盡快做到。 – alex

0

尋找此寶石:enumerate_it。我認爲它解決了你的問題!