Ruby YAML序列化

Ruby YAML序列化,ruby,serialization,yaml,Ruby,Serialization,Yaml,我正在用 YAML::dump(obj) 并将其存储在数据库中。 那我就给你打电话 myobj = YAML::load(obj) 我可以在调试中看到,对象已成功创建,并且其字段已初始化。 但是当我试图调用一个属性时,例如像myobj.name这样的“name”,我会收到一条“no method error”消息。我做错了什么,如何正确地反序列化对象?顺便说一句,我可以通过调用 myobj.instance_variable_get('@attributes')[:name] 谢谢。你确

我正在用

YAML::dump(obj) 
并将其存储在数据库中。 那我就给你打电话

myobj = YAML::load(obj)
我可以在调试中看到,对象已成功创建,并且其字段已初始化。 但是当我试图调用一个属性时,例如像myobj.name这样的“name”,我会收到一条“no method error”消息。我做错了什么,如何正确地反序列化对象?顺便说一句,我可以通过调用

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

谢谢。

你确定你的对象有方法名吗

你能试一下吗

YAML::dump(obj) 
p obj.name
可以肯定的是,您存储的对象实际上有一个方法
名称

你的

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

也许你可以用

myobj.attributes[:name]

但是没有更多的信息,所有这些都只是猜测。

只是带字段的简单ruby类很抱歉,我不能发布我的类的完整代码,因为所有代码都在NDA下(myobj.attributes和p obj.name返回未定义的方法属性和未定义的方法名称,因为我认为myobj不是AR对象,只是一个类。在我的类中,我有类MyClass属性\u key=%w(id name姓氏)当您使用
attributes\u键定义属性时
-您也定义访问器方法吗?@Marat\u Galiev:因此
p obj.name
将向您显示问题,我的答案就是解决方案-因此您可以接受我的答案。
myobj.attributes[:name]