2
としても、クラスメソッドを利用可能にする:activesupportの持つモジュールの機能::次のコードを考えると懸念
module Foo
extend ActiveSupport::Concern
module ClassMethods
def foo
puts 'foo'
end
end
end
class Bar
include Foo
end
私は何をしたいのですが、コールFoo.foo
の代わりBar.foo
です。時には、元のモジュールでクラスメソッドを呼び出すのが自然であると感じることがあります。特に、その機能が含まれているクラスとは関係がなく、元のモジュール名と一緒に記述する方がよい場合があります。
素晴らしいことに感謝します。なぜコードが匂いがすると思いますか? – kenn
モジュールがクラスメソッドとして定義されているモジュールからモジュール自体を拡張することは正しくないようです。通常、Fooからfooメソッドにアクセスするには、 'Foo :: ClassMethods.foo'を実行します。何も「間違っている」ことはありませんが、これまでに見たパターンではなく、その習慣を身に付けることを推奨しません。 –
@Beerlington:最初の例で 'Foo :: ClassMethods.foo'が動作することは確かですか?私はちょうどテストしたし、それはしなかった(Ruby v2.0)。ありがとう。 – sequielo