1
私は以下のようなモジュールを構築していますが、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)
'attributes'メソッドはどこに定義されていますか? –
私はそれを確認することができませんでしたが、私は属性のメソッドがActiveRecordクラスで定義されていると思う。 ActiveRecordオブジェクトをインスタンス化すると、属性はオブジェクトのインスタンスメソッドになります。それは役に立ちますか? –
'extends'が(ClassMethodsでやっているような)これらのクラスメソッドを作るので、' base.include(InstanceMethods) 'でなければならないと思います。' attributes'はクラスメソッドではありません。 – engineersmnky