2013-11-27 38 views
0

我可以在我的模型創造的東西做一些事情,如:實現java的枚舉樣的行爲在紅寶石

MyModel::TYPE::ONE 
MyModel::TYPE::TWO 

其中ONETWO都是字符串?我把他們安置在一個恆定在我的模型,如:

class MyModel 
    TYPE = ['ONE', 'TWO'] 
end 

所以我可以訪問MyModel::Type和獲取數組,但如何得到一個更公平?

回答

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的值設爲地圖,這與Java的enum對象類似。

編輯:您還可以得到價值是這樣的:

irb(main):009:0> MyModel::TYPE::constants 
=> [:ONE, :TWO]