2011-09-14 8 views
0

私は、クラスとインスタンスの両方のメソッドをモジュールに入れ、そのモジュールをモデルに組み込む方法について疑問に思っていました。モジュールをRails 3にインスタンスとクラスの両方のメソッド(とHTTPparty)に含める

私は他の例を扱っていますが、include HTTPpartを正しく配置する場所を理解することは苦労しています。 Vimeoの 含めると呼び出すことができること:

User.vimeo_account("name") 

として使用してUserモデルに取り付けることを目的と

module Vimeo 

    def self.included(base) 
    base.extend(ClassMethods) 
    end 

    module ClassMethods 

    class Base  
    include HTTParty 
    base_uri 'vimeo.com/api/v2' 
    headers 'Content-Type' => 'application/json' 
    end 

    class VimeoUser < Base 

    def vimeo_account(account_name) 
     @id = account_name 
    end 

    end 

end 

    def info 
    Vimeo::Base.get("http://vimeo.com/api/v2/#{@id}/info.json") 
    end 

end 

:以下

は私が午前どこの詳細ですよく、

user = User.new 
user.info 

アドバイスをいただければ幸いです。

答えて

1

次のようにgetを呼び出すと問題が解決するはずです。

def info 
    Vimeo::Base.class.get("http://vimeo.com/api/v2/#{@id}/info.json") 
end 

しかし、あなたは以下のようにシンプルなセットアップを持つことができるように私には思える: (私は理解していないこれ以上がない限り)

class VimeoUser 
    include HTTParty 
    base_uri 'vimeo.com/api/v2' 
    headers 'Content-Type' => 'application/json' 

    // All vimeo user related methods here, such that self.class.get etc is possible. 
    end 
+0

アイデアは私のモジュールを持っていることでしたユーザモデルにロードすることができます。ユーザは、インスタンスメソッドとクラスメソッドの両方を呼び出すことができます。 – Galaxy

+0

Vimeoと呼ばれるクラス(おそらくすべての外部のやりとり専用のモジュール内にあります)は、user_infoなどのインスタンスメソッドを持ちます。これはUserクラスで必要な正確な情報を提供します。 。このクラスのvimeoには、base_uriを含めることができ、self.class.get()を実行し、必要な情報を与えるためにjsonを解析するインスタンスメソッドを持つことができます。このクラスのVimeoは、「include HTTParty」を持っていて、HTTPartyのすべてのGorinessをカプセル化していました。ちょっとした提案。 – jake

+0

私はこのようなことをやってしまいました。 – Galaxy

関連する問題