【问题标题】:Rails enumerations: String or Integer column?Rails 枚举:字符串还是整数列?
【发布时间】:2011-10-27 20:44:55
【问题描述】:

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

我已经试过了

  • enum_simulator
  • has_enum

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

非常感谢!

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

【问题讨论】:

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


    【解决方案1】:

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

    我在 Rails 2.3 和 Rails 3 中都使用了enumerated_attribute,效果很好。是的,它使用字符串列。

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

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

    【讨论】:

    • 非常感谢!我会调查一下。你知道如果枚举中有很多冗余值,MYSQL是否会压缩字符串列的数据?
    • @alex,我不这么认为,因为这就是 enum 的用途。顺便说一句,别忘了点赞。
    • 好的,谢谢...我会做一些进一步的研究。很抱歉,我目前没有足够的声誉来投票,但我一定会尽快这样做。
    • 我可以确认 Rails 3 仍然不支持 MySQL enum
    【解决方案2】:

    寻找这颗宝石:enumerate_it。我认为它可以解决您的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      相关资源
      最近更新 更多