【问题标题】:ActiveRecord / Rails - Access model instance variable that is overridden by a module methodActiveRecord / Rails - 访问被模块方法覆盖的模型实例变量
【发布时间】:2014-08-29 17:18:07
【问题描述】:

假设我们有一个 ActiveRecord 模型 Group,它有一个名为 name 的属性(和数据库中的列)(默认情况下它实际上是不可见的):

class Group < ActiveRecord::Base
  include App::CustomModule
end

还有一个自定义模块CustomModule 包含在Group 模型中,它有一个名为name 的方法:

module App
  module CustomModule
    def name
      'module name'
    end
  end
end

因此,当在 Group 模型实例中引用 name 时,我会从 CustomModule 的 name 方法中获得一个值(self.name 也是如此):

> Group.find(1).name
=> "module name"

如何在不更改类属性和模块方法名称的情况下获取 Group 模型实例的原始 name 属性值(不是模块方法值)?

rails (4.0.4) activerecord (4.0.4)

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    这应该可以解决问题:

    group.read_attribute(:name)
    

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 2014-03-17
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多