假设我有一些
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
方法中获取这些值?
答案 0 :(得分:3)
似乎你不清楚很多事情。您的initialize
方法可能意味着:
@param1 = law
@param2 = current_user
但除此之外,似乎你不明白included
钩子是什么以及何时被调用。当included
中的include Command
行被执行时,您的Generator
挂钩只会被调用一次。当您使用Generator
创建新Generator.new(param1,param2)
时,您的included
挂钩已被调用,不会再被调用。
作为一个友好的建议,如果你是Ruby的初学者,我会建议你使用该语言的基本功能,并在尝试使用included
钩子之类的东西之前先了解它们。