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]