我可以在模型中创建一些类似的东西:
MyModel::TYPE::ONE
MyModel::TYPE::TWO
其中ONE
和TWO
是字符串?我将它们放在模型中的常量中,如:
class MyModel
TYPE = ['ONE', 'TWO']
end
所以我可以访问MyModel::Type
并获取数组,但是如何再获得一个级别呢?
答案 0 :(得分:2)
您可以获得所需的语法:
[~]$ irb
irb(main):001:0> module MyModel
irb(main):002:1> module TYPE
irb(main):003:2> ONE = 1
irb(main):004:2> TWO = 2
irb(main):005:2> end
irb(main):006:1> end
=> 2
irb(main):007:0> MyModel::TYPE::ONE
=> 1
irb(main):008:0> MyModel::TYPE::TWO
=> 2
这有一个缺点,或者可能是优点,允许在枚举上使用额外的“属性”,这与Java给你的不同。如果您愿意,可以将ONE和TWO的值设为map,这与Java的enum
对象类似。
编辑:你也可以得到这样的值:
irb(main):009:0> MyModel::TYPE::constants
=> [:ONE, :TWO]