ruby-on-rails - 从另一个模块调用模块的选定方法
问题描述
我在模块 A 中定义了一个方法。我想从模块 B 调用相同的方法
module A
included do
def self.some_func
end
end
end
module B
some_func # It raise error (NoMethodError: undefined method). How solve this?
end
module C
include A
include B
end
这行不通。是否可以调用另一个模块中的一个模块定义的函数?
解决方案
那module A
应该是提高一个ArgumentError
,除非它extends ActiveSupport::Concern
在顶部也有一个。如果没有ActiveSupport::Concern
,您将在Module#included
这里调用实例方法:
included do
...
end
但这需要一个论据。
如果你这样说:
module A
extend ActiveSupport::Concern
included do
def self.some_func
end
end
end
然后你会得到included
你想要使用的和module A
你期望的。
另外,module B
不是include A
这样它无处可去some_func
,所以这样:
module B
some_func
end
会给你一个NoMethodError
。如果您包括A
:
module B
include A
some_func
end
那么它将起作用。
推荐阅读
- ios - UISegmentedControl 自定义/扩展
- c++ - 在 QMenuBar/QMenu 上捕获 keyPressEvent?
- javascript - GAE Flex 上的节点获得最大侦听器问题
- authentication - 使用 NFC 非接触式银行卡进行身份验证
- aws-lambda - Alexa 技能 - 如何逐行读取结果集
- href - 使用 jQuery 删除 [href]
- excel - Excel 公式帮助:1 周内,但不超过 1 周
- php - 使用 PHPExcel 从 xlsx 转换为 csv 期间更改日期格式
- r - R:我应该用与函数参数相同的名称命名变量吗?
- iterator - 寻找 H2O 的记录迭代器