次のような通常のクラス メソッドを使用してハッシュにアクセスしようとしています。
aHash.key
しかし、私はこのエラーが発生します:
{:key1="value1", :key2="value2"}:Hash の未定義のメソッド `key1'
ここで提案されているように、ハッシュクラスで「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」を呼び出すと、定義したハッシュが使用されないことは確かです。宝石の 1 つを見ると、次のように表示されます。
"activerecord-postgres-hstore/hash" が必要
このファイルを確認したところ、別のハッシュが実装されていました。そこに「method_missing」を追加する必要があると思いますが、gem を変更せずに実行できますか?
クラスのオーバーロードがルビーでどのように機能するかを理解していないので、答えは別のものかもしれません。