如何从序列化为JSON的ActiveModel对象恢复关联类?

时间:2012-02-08 00:01:21

标签: ruby-on-rails ruby json activerecord activemodel

我有一个包含ActiveModel的类需要有一些“关联”,如下所示:

a      = ActiveModelClass.new
a.user = User.find(1)

我只是使用attr_accessor:

attr_accessor :user

### Elsewhere ###

a.user.name # => "Kevin"

到目前为止一切顺利。但现在我想将它序列化为JSON:

json = a.to_json
b    = ActiveModelClass.new(ActiveSupport::JSON.decode(json))

但是现在,用户是一个哈希:

b.user.class # => Hash

如何将这些“关联”干净地恢复为原来的类的对象?

1 个答案:

答案 0 :(得分:0)

我有点困惑:我有一种感觉,你已经将你的榜样抽象到了难以理解的地步。你有类似的东西吗?

b.user 
=> {:name => "Kevin", :email => "kev@foo.foo"}

如果是这样,只需将用户对象传递给.new或.create方法,就可以使用该对象创建用户对象:

user = User.create(b.user) 

然后,您可以使用此用户对象执行所需操作,包括将b.user设置为等于它。