从模块方法中获取对象属性的值

时间:2016-12-05 01:39:51

标签: ruby ruby-on-rails-4 module

我正在构建一个类似下面的模块,但是我在self.attributes方法调用中遇到了“未定义的方法”错误。我确定我错过了一些简单但却看不到的东西。任何指导将不胜感激!

module TestModule
  def self.included(base)
    base.extend(ClassMethods)
    base.extend(InstanceMethods)
  end

  module InstanceMethods

    def mon_mothma
      self.attributes.each do |key, value|
        admiral_ackbar(key)
      end
    end

  end

  module ClassMethods

    def admiral_ackbar(key)
      self.send("#{key}=", value)
    end

  end

end

ActiveRecord::Base.send(:include, TestModule)

1 个答案:

答案 0 :(得分:0)

根据您的建议更多地考虑您的反馈,我找到了我的解决方案,将base.extend(InstanceMethods)更改为base.include(InstanceMethods)。然后,实例化方法可用于实例化对象。然后我简单地将麻烦的类方法更改为实例方法。非常感谢!