2

次のコードが与えられます:

module Foo
  extend ActiveSupport::Concern

  module ClassMethods
    def foo
      puts 'foo'
    end
  end
end

class Bar
  include Foo
end

私がやりたいのは、Foo.fooの代わりに電話をかけることですBar.foo。特に機能が含まれているクラスとは関係がなく、元のモジュール名と一緒に説明する方が適切な場合は、元のモジュールでクラスメソッドを呼び出す方が自然な場合があります。

4

1 に答える 1

5

これはコードの臭いのようです。そうは言っても、Fooモジュールをクラスメソッドで拡張することができます。

module Foo
  extend ActiveSupport::Concern

  module ClassMethods
    def foo
      puts 'foo'
    end
  end

  extend ClassMethods
end

class Bar
  include Foo
end

Bar.foo
Foo.foo
于 2011-07-08T03:29:26.590 に答える