用Ruby问题创建一个类方法

Nei*_*ton 2 ruby ruby-on-rails

为什么以下代码导致Foo :: People:Class'的错误'undefined local variable或method`foo_client'

class Foo::People

  class << self
    def get_account_balance(account_num)
      foo_client.request :get_account_balance, :body => {"AccountNum" => account_num}
    end
  end

  def foo_client
    @@client ||= Savon::Client.new do|wsdl, http|
      wsdl.document = PEOPLE_SERVICE_ENDPOINT[:uri] + "?WSDL"
      wsdl.endpoint = PEOPLE_SERVICE_ENDPOINT[:uri]
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 7

def get_account_balanceclass << self块内,所以它是一个类方法.def foo_client不是,所以这是一个实例方法.所以你不能打电话foo_client,get_account_balance因为你没有在一个实例上调用它People.