0

私はルビーオブジェクトをでシリアル化しています

YAML::dump(obj) 

そしてそれをデータベースに保存します。それから私は呼んでいます

myobj = YAML::load(obj)

オブジェクトが正常に作成され、そのフィールドが初期化されたことがデバッグでわかります。しかし、myobj.nameのような「name」などの属性を呼び出そうとすると、「メソッドエラーなし」というメッセージが表示されます。何が間違っているのでしょうか。また、オブジェクトを正しく逆シリアル化するにはどうすればよいですか。BTWを呼び出すことで、オブジェクトのフィールドにアクセスできます。

myobj.instance_variable_get('@attributes')[:name]

ありがとう。

4

1 に答える 1

2

オブジェクトにメソッドがありnameますか?

試してみませんか

YAML::dump(obj) 
p obj.name

念のために言っておきますが、保存するオブジェクトには実際にメソッドがありnameます。

君の

myobj.instance_variable_get('@attributes')[:name]

メソッドまたは属性があることを示していませんname。メソッド(おそらくハッシュ)@attributesをサポートする属性のみがあります。[]

おそらくあなたは使用することができます

myobj.attributes[:name]

しかし、これ以上の情報がなければ、これはすべて推測にすぎません。

于 2012-09-16T19:34:01.490 に答える