假设我有一个名为'options'的数据库表,其对应的模型叫做Option。该表的结构简单,如下......
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
之类的数据,这些数据应该将值返回为“DAILY”,类似地@options.show_registration_number
应该将值返回为0.
如果可能的话,是否允许进行修改,如@options.default_view = 'MONTHLY'
,并且应该更新数据库中的相应记录。
答案 0 :(得分:0)
这会让你几乎找到你想要的答案:http://code.dblock.org/how-to-define-enums-in-ruby
它依赖于const_missing
,并假设你的" enum"被定义为常量,在您的情况下Option::default_view
但是,很容易看到如何调整此代码以使用method_missing
,以便您可以执行Option.default_view
同一方法的另一个例子包含在rails-settings gem中,因此您可以浏览this code以寻找您正在寻找的答案