2012-09-16 95 views
0

我序列化Ruby对象与红宝石YAML序列化

YAML::dump(obj) 

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

myobj = YAML::load(obj) 

我可以在该对象被创建成功调试看到,它的视野进行初始化。 但是当我试图调用一个属性,例如myobj.name的“名称”,我收到一个“无方法错误”消息。顺便说一下,我可以通过调用

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

我可以访问我的对象的字段谢谢。

+0

只是简单的红宝石类与字段 –

+0

对不起,但我不能发布我的类的完整代码,因为所有代码在NDA( –

回答

2

你确定你的对象有一个方法name

你可以尝试

YAML::dump(obj) 
p obj.name 

只是可以肯定,你存储的对象有一个真正的方法name

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

并不表明,有一个方法或属性name。只有一个属性@attributes,支持方法[](可能是一个散列)。

也许你可以使用

myobj.attributes[:name] 

但没有更多的信息,这一切都只是一种猜测。

+0

myobj.attributes和p obj.name返回未定义的方法属性,并且未定义的方法因为我认为myobj不是一个AR对象,只是一个类。在我的课上我有类MyClass ATTRIBUTES_KEYS =%w(id name surname) –

+0

当你用'ATTRIBUTES_KEYS'定义属性时 - 你还定义了存取方法吗? – knut

+0

我的错误 - 没有 –