1

我想反序列化一个序列化对象。所以这是可能的,如(使用JSON)来处理:ActiveRecord对象序列化和反序列化到数据库

>> l = Yea.create(:title => "foo bar") 
=> #<Yea id: 3, title: "foo bar", created_at: "2010-07-05 21:44:54", updated_at: "2010-07-05 21:44:54"> 
>> j = l.to_json 
=> "{\"yea\":{\"created_at\":\"2010-07-05T21:44:54Z\",\"title\":\"foo bar\",\"updated_at\":\"2010-07-05T21:44:54Z\",\"id\":3}}" 
>> Yea.delete(3) 
=> 1 
>> a = ActiveSupport::JSON.decode(j) 
=> {"yea"=>{"created_at"=>"2010-07-05T21:44:54Z", "title"=>"foo bar", "updated_at"=>"2010-07-05T21:44:54Z", "id"=>3}} 
>> Yea.create(a[:yea]) 
=> [#<Yea id: 4, title: "foo bar", created_at: "2010-07-05 21:44:54", updated_at: "2010-07-05 21:44:54">] 

但我想写这一点更通用,使用这样一些东西:

ActiveRecord.create(a) 

而不是:

Yea.create(a[:yea]) 

你知道该怎么做吗?感谢您的任何帮助。

回答

0

我认为这可能是为简单明了的:

require 'yaml' 
@article = YAML::load(@serialized_copy) 
+0

谢谢你的回答。但是这不是,因为我想通过ActiveRecord(或ActiveModel)加载到数据库。 – 2010-07-06 07:40:14

0

你不能只是存储的ID?这将允许您在任何地方流式传输ID,而不用担心内容。

+0

不,我只是想在数据库中加载一个序列化的对象(在YAML或JSON中)。有没有更通用的方式:Article.create(ActiveSupport :: JSON.decode(@ article.to_json)[:article]),没有指定“文章”? – 2010-07-06 07:29:34

+0

你在寻找serialize类的方法吗? http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001799 – 2010-07-08 01:41:12