枚举模型中的哈希值

时间:2014-05-20 13:00:02

标签: ruby-on-rails ruby ruby-on-rails-4 enumerize

我在我的项目中使用gem enumerize。现在我有这个:

class MyAddress < ActiveRecord::Base

  enumerize :country, in: [:country1, :country2, :country3], default: :country2

end

现在我想将state转换为enumerize。显然,每个国家都有自己的州。我怎么能这样做:

class MyAddress < ActiveRecord::Base

  enumerize :country, in: [:country1, :country2, :country3], default: :country2
  enumerize :state, in: [{ country1: [:state11, :state12, :state13], country2: [:state21, :state22, :state23], country3: [:state31, :state32, :state33]} ]

end

有可能吗?

1 个答案:

答案 0 :(得分:2)

gem文档并未指出此类事情是可行的。它有意义,它不会。枚举只是键(或名称)和值(整数)之间的映射。在您的示例中,您基本上希望将国家/地区(键)映射到非数字值数组。所以这没有意义。

我建议你按国家/地区组织你的州和代码评论,然后让枚举变得简单。

enumerize :state,
          in: [
            # Country 1
            :state11, :state12, :state13,
            # Country 2
            :state21, :state22, :state23
          ]

对于存储给定值的密钥,枚举并不是真正“容易”记住。因此,您只需要想出一种方法,使其更容易查找(正如我上面尝试的那样)。