有没有办法在模块中使用类方法而不在rails中扩展它?

Đỗ *_*iến 3 ruby oop ruby-on-rails class

目前我有一个这样的模块:

module MyModule
  def A

  end

  .....

end
Run Code Online (Sandbox Code Playgroud)

我有一个模型,我想使用方法A作为类方法.然而,事情是我只需要一个方法.如果我扩展它,我会将其他不必要的类方法扩展到我的模型中.因此,有没有办法像MyModule.A那样做,而不是像这样重写模块:

module MyModule
  def A
    ...
  end

  def self.A
    ...
  end

  .....

end
Run Code Online (Sandbox Code Playgroud)

如果我这样做的话,它会重复我自己.我仍然觉得在Rails中有更好的方法.

Ale*_*kin 8

使用Module#module_function使一个单一的功能是一个模块功能:

module M
  def m1; puts "m1"; end
  def m2; puts "m2"; end
  module_function :m2
end
Run Code Online (Sandbox Code Playgroud)

要么:

module M
  def m1; puts "m1"; end
module_function # from now on all functions are defined as module_functions
  def m2; puts "m2"; end
end

M.m1 #? NoMethodError: undefined method `m1' for M:Module
M.m2 #? "m2"
Run Code Online (Sandbox Code Playgroud)