如何访问包含模块中的当前实例方法

时间:2013-11-04 13:26:02

标签: ruby-on-rails ruby module include

假设我有一些

class Generator
      attr_accessor :param1
      attr_accessor :param2

      def initialize(param1, param2)
          @param1 = param1
          @param2 = param2
      end
      include Command

并在Command

module Command
    extend ActiveSupport::Concern

      def self.included(klass)
        @path ||=klass.new(@param1,@param2) unless (@param1.nil? && @@param2.nil?)
      end

假设我创建了一些Generator.new(param1,param2),那么当模块包含时,@ param1和@param2都是nil。如何在included方法中获取这些值?

1 个答案:

答案 0 :(得分:3)

似乎你不清楚很多事情。您的initialize方法可能意味着:

 @param1 = law
 @param2 = current_user

但除此之外,似乎你不明白included钩子是什么以及何时被调用。当included中的include Command行被执行时,您的Generator挂钩只会被调用一次。当您使用Generator创建新Generator.new(param1,param2)时,您的included挂钩已被调用,不会再被调用。

作为一个友好的建议,如果你是Ruby的初学者,我会建议你使用该语言的基本功能,并在尝试使用included钩子之类的东西之前先了解它们。