我在我的项目中使用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
有可能吗?
答案 0 :(得分:2)
gem文档并未指出此类事情是可行的。它有意义,它不会。枚举只是键(或名称)和值(整数)之间的映射。在您的示例中,您基本上希望将国家/地区(键)映射到非数字值数组。所以这没有意义。
我建议你按国家/地区组织你的州和代码评论,然后让枚举变得简单。
enumerize :state,
in: [
# Country 1
:state11, :state12, :state13,
# Country 2
:state21, :state22, :state23
]
对于存储给定值的密钥,枚举并不是真正“容易”记住。因此,您只需要想出一种方法,使其更容易查找(正如我上面尝试的那样)。