使用相同的方法包含2个模块

时间:2017-02-14 17:23:17

标签: ruby-on-rails ruby module

我有一个Controller,现在包含两个Module s。

class SomeController < ApplicationController
  include ModuleA
  include ModuleB

  def index
    if something?
      a_method # Method from ModuleA
    else
      b_method # Method from ModuleB
    end
  end

end

出于某种原因,ModuleAModuleB具有相同的逻辑(方法),但方法&#39;实施是不同的。所以,我需要它们在单独的文件(模块)中才能轻松重构,因为我需要经常更改方法的实现。现在,我在不同的模块中使用不同的方法名称(前缀)。

module ModuleA
  def a_method
    a_other_method
    ...
  end

  private

  def a_other_method
    ...
  end
end

module ModuleB
  def b_method
    b_other_method
    ...
  end

  private

  def b_other_method
    ...
  end
end

如果我在method的两个模块other_method中使用相同的方法名称(methodModuleA),则other_method的{​​{1}}运行ModuleB我收到了错误。

是否可以在模块中使用相同的方法名称?我需要如何命名它们,使method从同一模块运行other_method,并在其中实现?{/ p>

感谢您的帮助!

0 个答案:

没有答案