0

クラス インスタンス変数のアクセサを作成しようとしています。attr_accessorクラスに含まれているモジュールからメソッドを呼び出しています。以下のコードを参照してください。

module Persistence
  def self.included(mod)
      mod.extend ClassMethods
      # Add accessor for class instance variable
      class << mod
          attr_accessor :persistent_data
      end
  end

  module ClassMethods
      def X
          persistent_data = 'data'
      end
  end
end

上記のコードは機能します。ただし、を呼び出すコードを次のように変更すると、次のattr_accessorようになります。

 mod.instance_eval do
     attr_accessor :persistent_data
 end

私は得るNoMethodError: undefined method `persistent_data='

両方の方法が同じように機能するべきではありませんか、それとも私の理解が間違っていますか? REE 1.8.7 を使用しています

4

0 に答える 0