0

我正在序列化一个红宝石对象

YAML::dump(obj) 

并将其存储在数据库中。然后我打电话

myobj = YAML::load(obj)

我可以在调试中看到该对象已成功创建并且它的字段已初始化。但是,当我尝试调用一个属性时,例如 myobj.name 之类的“名称”,我会收到“无方法错误”消息。我做错了什么,如何正确反序列化对象?顺便说一句,我可以通过调用访问对象的字段

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]

But without more information, all this are only a guess.

于 2012-09-16T19:34:01.490 回答