2013-12-23 4 views
7

モジュールメソッド#(https://github.com/37signals/concerning - Rails 4.1の一部)に関するクラスメソッドを定義したいと思います。これにより、単一のクラスで使用されているモジュールをクラスに戻すことができます。モジュール#に関するクラスメソッドを定義できますか?

しかし、私はクラスメソッドを定義することはできないようです。私は仕事にこれらの両方のを期待

class User < ActiveRecord::Base 
    attr_accessible :name 

    concerning :Programmers do 
    module ClassMethods 
     def programmer? 
     true 
     end 
    end 
    end 

    module Managers 
    extend ActiveSupport::Concern 

    module ClassMethods 
     def manager? 
     true 
     end 
    end 
    end 

    include Managers 
end 

:これを考えると

User.manager? 
User.programmer? 

しかし、二つ目は

NoMethodError: undefined method `programmer?' for #<Class:0x007f9641beafd0> 

どのように関わるモジュール#を使用してクラスメソッドを定義することができますを上げますか?

+0

FWIW、サンプルプロジェクト:https://github.com/johnnaegle/concerning-example –

+1

https://github.com/37signals/concerning/issues/1 –

+0

これはRailsで修正されています。 –

答えて

5

代わりにこれを試してみてください:

class User < ActiveRecord::Base 
    concerning :Programmers do 
    class_methods do 
     def im_a_class_method 
     puts "Yes!" 
     end 
    end 
    end 
end 

コンソール:

concerning :Programmers do 
    included do 
    def self.programmer? 
     true 
    end 
    end 
end 
+0

これはうまくいきますが、私が望むほどクリーンではありません。シームレスなモジュール定義は本当に魅力的でした。 –

+0

合意 - この機能はまだ完全に焼かれていないようです。 – Rob

2

クイック回避策:

concerning :MeaningOfLife do 
    included { extend ClassMethods } 

    module ClassMethods 
     ... 
    end 
関連する問題