在Rails 3中包含模块:实例和类方法(以及HTTParty)。

时间:2011-09-14 07:36:33

标签: ruby-on-rails ruby-on-rails-3 rails-models

我一直想知道将类和实例方法同时放入模块,然后将该模块包含到模型中的方法。

我已经使用了其他示例,但我很难理解在哪里正确放置包含HTTP方案。

以下是我所在位置的详细信息:

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

目标是使用以下方法将其附加到用户模型:include Vimeo 并且能够致电:

User.vimeo_account("name")

以及

user = User.new
user.info

非常感谢任何建议!

1 个答案:

答案 0 :(得分: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