2013-01-17 24 views
0

比方說,我有一個名爲「選擇」與所謂的選項對應的模型的數據庫表。此表的結構簡單,如下...實現在軌動態方法鍵/值對

id -> primary key, auto increment 
name -> key 
value -> value for the key 

的樣本數據行可能如下......

id name       value  
---- ---------------------------- ----------- 
1 default_view     DAILY  
2 show_registration_number  0   
3 notification_method   IMMEDIATE  

我想的是,所有選項(鍵)應該可以訪問作爲方法名稱給我。

例如,如果做如下...

@options = Options.find(:all) 

是有可能訪問像@options.default_view的數據,應該返回我的價值爲「每天」,同樣@options.show_registration_number它應該會返回值爲0。

而且如果可能的話,修改是否會允許的一樣,如果@options.default_view = 'MONTHLY',應更新數據庫中的相應記錄。

回答

0

這將讓你幾乎你要找的答案:http://code.dblock.org/how-to-define-enums-in-ruby

它依賴於const_missing並且假定你的「枚舉」的元素被定義爲常數,你的情況Option::default_view

然而,很容易看到如何調整此代碼以便使用method_missing以便您可以執行Option.default_view

該方法的另一個示例包含在rails-settings寶石,這樣你就可以瀏覽this code的回答你正在尋找