1

Redis::Objects を使用しています

https://github.com/nateware/redis-objects

オブジェクトを JSON に変換する前にプレゼンターのクラスを変更したいので、キーをマージしたいのですが、プレゼンター内の redis オブジェクト クラスのアクセサーを管理する必要はありません。

class MyOb
  include Redis::Objects

  value :foo
  value :bar
end

myob = new MyOb
myob.foo = "foo"
# I can do
myob.to_json #=> valid string with foo and bar keys
# what i want
myob.to_h #=> {foo: "foo", bar: nil}
# so i can
myob.to_h.merge(baz: "baz"}.to_json

似たような表現を私に与えるものは何も見つからなかったので、もしあなたが魔法のアピソースを知っているなら、私はそれについて聞きたいです. ありがとう!

4

2 に答える 2

1

次のように非効率的にハッキングできます。

class MyOb
  def to_h
    JSON.parse(self.to_json)
  end
end

[編集]または、複数の場所でキーを追跡する必要がないように、これを行うこともできます。

class MyOb
  def to_h
    Hash[MyOb.redis_objects.map { |k,_| [k, self.send(k)] }]
  end
end
于 2013-05-15T21:34:28.300 に答える