当方法名称与另一个可用方法相同时,如何显式使用特定方法?

时间:2012-10-27 22:13:11

标签: ruby-on-rails

我在班上包含两个不同的模块库。两者都有方法test_method。我如何明确地使用其中一个?

class User
include Calculus::Math #a module
include Algebra::Math::Misc #a module

#perform_test is defined in both Calculus::Math and Algebra::Math::Misc
perform_test: 1 

#Calculus::Math::perform_test: 1 #This doesn't work

end

由于

2 个答案:

答案 0 :(得分:0)

如果元编程你将不得不做一点:

(Calculus::Math).method(:perform_test).bind(self).call 1

include Calculus::Math
alias :foo :perform_test
include ...

我没有测试其中任何一个,可能会发生一些小错误。

答案 1 :(得分:0)

尝试将perform_test转换为Calculus::Math上的模块功能。

Calculus::Math.module_eval do
  module_function(:perform_test)
  public :perform_test
end

class User
  include Calculus::Math #a module
  include Algebra::Math::Misc #a module

  Calculus::Math.perform_test(1)
end