【发布时间】:2020-05-11 23:08:17
【问题描述】:
随着
def self.included(base)
end
钩子可以从included钩子内部访问包含类。到目前为止,我知道模块。但是我不是将base 作为参数传递给钩子吗?这是否意味着它也应该作为某种模块变量在整个Module 中可用,并且在模块中预先存在钩子?
它显然没有定义为类变量 (Module.class_variables)、实例变量 (Module.instance_variables) 或常量,因为它是小写的。
那么base 参数是什么?当你将它作为参数传递给模块钩子时,它只是“被召唤存在”吗?
@spickermann
2.6.0 :001 > module ConcernModule
2.6.0 :002?> extend ActiveSupport::Concern
2.6.0 :003?> included(base) do
2.6.0 :004 > puts "base is #{base}"
2.6.0 :005?> end
2.6.0 :006?> end
Traceback (most recent call last):
2: from (irb):1
1: from (irb):3:in `<module:ConcernModule>'
NameError (undefined local variable or method `base' for ConcernModule:Module)
谢谢
【问题讨论】:
-
你看过docs for
included吗? -
文档说关注中的
included也有一个base参数,但是当我尝试像included(base) do ...apidock.com/rails/ActiveSupport/Concern/included 一样调用它时,我收到一条错误消息 -
NameError(ConcernModule:Module 的未定义局部变量或方法“基”)。谢谢。
-
请发表您的疑虑、您如何将您的疑虑纳入课堂以及您收到的错误消息。
标签: ruby-on-rails ruby module