方法(哈希)工作,hash.method失败

时间:2014-03-30 15:34:20

标签: ruby-on-rails ruby hash

如何在rails中的哈希上调用自定义帮助器方法? 以下是我的挑战的简化示例。

当我致电 last_key(my_hash)

时,以下方法有效
  def last_key(hash)
    hash.keys.last
  end

当我调用 my_hash.first_key

时,此方法失败
  def self.first_key
    self.keys.first
  end

用于散列的first_key的未定义方法是我使用此方法获得的响应以及其他几个代码排列。

为什么这不起作用以及 my_hash.first_key 正常运行所需的方法语法是什么?

3 个答案:

答案 0 :(得分:4)

这是一个类方法(self.something),但您需要一个对象方法:

class Hash

  def first_key
    self.keys.first
  end

end

a = {'s' => 1, 'b'=> 2}
a.first_key # => "s"

答案 1 :(得分:1)

从方法定义中删除self.,否则它将成为类方法。

  def first_key
    self.keys.first
  end

答案 2 :(得分:0)

您需要扩展哈希类以实现新的实例方法 some_method
这可以按如下方式完成:

class Hash

  def some_method
    # your code here
  end

end

你可以使用。     a_hash.some_method