如何在Ruby中调用类方法中的方法

时间:2015-07-21 21:35:32

标签: ruby

我有一个问题。

这是我的班级:

class Provider
  include HTTParty
  CONFIG = Rails.configuration.mediaset[Rails.env]

  def self.category
    response = HTTParty.get(CONFIG['category_url'])
    category_hash = JSON.parse response.body
    if category_hash['resultCode'] == 'OK' 
      return convert_categories(category_hash)
    end
  end

  def convert_categories(cat_hash)
    h = cat_hash.find_all_values_for('categoryList')
    category_array = h.map { |c| c.except!('categoryList') }
  end
end

当我尝试调用'Provider.category'时,结果为:

undefined method `convert_categories' for Provider:Class

如何添加函数来处理我的哈希?

1 个答案:

答案 0 :(得分:4)

正如所建议的那样,只需制作简单的功能"一种类方法......

  def self.convert_categories(cat_hash)
    h = cat_hash.find_all_values_for('categoryList')
    h.map { |c| c.except!('categoryList') }
    return h
  end

这样做,代码就可以了。

如果没有self.,则该方法是一个实例方法,只能在Provider类的对象上调用。

虽然诚然h.map...行没有意义。结果未保存在任何位置,您仍然会返回原始h对象。