rails反转to_xml并获取原始模型

时间:2010-03-24 01:04:55

标签: ruby-on-rails ruby activerecord

我这样做了:

[User.first, User.last].to_xml

得到了这个:

<users type="array">
   <user>
     <created-at type="datetime">2010-03-16T06:40:51Z</created-at>
     <id type="integer">3</id>
     <password-hash></password-hash>
     <salt></salt>
     <updated-at type="datetime">2010-03-16T06:40:51Z</updated-at>
     <username nil="true"></username>
   </user>
   <user>
     <created-at type="datetime">2010-03-23T03:58:15Z</created-at>
     <id type="integer">7</id>
     <password-hash></password-hash>
     <salt></salt>
     <tutorial-state nil="true"></tutorial-state>
     <updated-at type="datetime">2010-03-23T03:58:15Z</updated-at>
     <username nil="true"></username>
   </user>
</users>

如何获取xml的字符串并将其反转以获取原始的activerecord对象?

2 个答案:

答案 0 :(得分:4)

试试这个:

模型对象xml:

xml = User.first.to_xml
User.new(Hash.from_xml(xml))

模型xml数组:

xml = User.all.to_xml
users = (Hash.from_xml(xml)["users"] || []).collect{|attr| User.new(attr)}

答案 1 :(得分:0)

知道知道您可以对个人用户执行此操作;在数组上执行此操作将需要您自己的XML解析。

user = User.new
user.from_xml '<user><id type="integer">1</id></user>'