0
- 我想定義一個方法封裝模塊。
- 它與不同模塊中的方法具有相同的名稱。
- 當我打電話給我想調用另一個混合在第一個。
代碼:如何在模塊範圍內調用方法
class User
include ModuleA
include ModuleB
end
module ModuleA
extend ActiveSupport::Concern
included do
def hi
end
end
end
module ModuleB
extend ActiveSupport::Concern
def hi(param)
end
def say_hi
hi(param)
end
end
錯誤與
ArgumentError: wrong number of arguments (1 for 0)
# ./app/models/concerns/modulea.rb:16:in `hi'
軌道4
爲什麼'ModuleB'不使用'included'的塊形式? –
@MichaelKohl:真正的問題是,爲什麼'ModuleA'使用該形式:) –
簡短回答:刪除名稱衝突(即重命名其中一個「hi」方法)。只要它在那裏,_something_將被打破(ModuleA或ModuleB,取決於你首先包含哪一個) –