Rails枚举:String还是Integer列?

时间:2011-10-27 20:44:55

标签: mysql ruby-on-rails-3 gem enumeration

我目前正在为枚举寻找合适的Rails gem。

我已经尝试了

  • enum_simulator
  • has_enum

    1. 两者都使用数据库中的字符串列来存储枚举数据。 整数列不会有更好的性能或更少的存储消耗(使用MySQL)吗?
    2. 那里有宝石可以做到吗?

非常感谢!

更新 我找到了simple_enum gem,它使用整数值来表示数据库中的枚举。它支持rails 3.1并且维护得很好。

2 个答案:

答案 0 :(得分:4)

Ruby Toolbox是你的朋友。 https://www.ruby-toolbox.com/categories/Active_Record_Enumerations

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

IMO字符串列优于整数列,因为它们不暗示任何值的顺序,并且在不查看源代码的情况下使属性更容易理解(逆向工程,如果您愿意)。通常情况下,性能差异可以忽略不计,特别是如果你在该领域有一个索引 - 你应该这样做。

在Rails 2.3中使用MySQL enum字段已经证明很复杂,模式有问题,不确定它是否在Rails 3中存在。

答案 1 :(得分:0)

寻找这个宝石:enumerate_it。我认为它解决了你的问题!