0

假设我有一个名为“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应该将值返回为“每日”的数据,并且类似地@options.show_registration_number应该将值返回为 0。

此外,如果可能的话,是否允许修改,例如是否@options.default_view = 'MONTHLY'应该更新数据库中的相应记录。

4

1 回答 1

0

这将为您提供几乎您正在寻找的答案: http ://code.dblock.org/how-to-define-enums-in-ruby

它依赖const_missing并假设您的“枚举”元素被定义为常量,在您的情况下Option::default_view

但是,很容易看出如何调整此代码以使用method_missing,以便您可以做到Option.default_view

这种相同方法的另一个示例包含在rails-settings gem 中,因此您可以浏览此代码以找到您正在寻找的答案

于 2013-01-17T23:50:21.050 回答