我正在尝试使用这样的常规类方法访问哈希:
哈希键
但我得到这个错误:
{:key1=>"value1", :key2=>"value2"}:Hash 的未定义方法 `key1'
我按照这里的建议在 Hash 类中定义了一个“method_missing” :
class Hash
def method_missing(method, *params)
method = method.to_sym
return self[method] if self.keys.collect(&:to_sym).include?(method)
super
end
end
我肯定知道,当我调用“aHash.key”时,它不使用我定义的哈希。如果我查看我的宝石上的一个,它会显示:
需要“activerecord-postgres-hstore/hash”
所以我检查了这个文件,确实他们已经实现了另一个哈希。我相信我应该在其中添加“method_missing”,但可以在不修改 gem 的情况下完成吗?
也许我不明白类重载如何与 ruby 一起工作,所以答案可能是别的。