【问题标题】:Implementing dynamic methods in rails for key/value pair在 Rails 中为键/值对实现动态方法
【发布时间】:2013-01-01 05:46:27
【问题描述】:

假设我有一个名为“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' 并应更新数据库中的相应记录。

【问题讨论】:

    标签: ruby-on-rails dynamic-method


    【解决方案1】:

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

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

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

    rails-settings gem 中包含了相同方法的另一个示例,因此您可以浏览 this code 寻找您正在寻找的答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多