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



我有一个包含ActiveModel的类,它需要一些"关联",比如:

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

我只是使用了一个属性访问器:

attr_accessor :user
### Elsewhere ###
a.user.name # => "Kevin"

到目前为止还不错。但现在我想将它序列化为JSON:

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

但现在,用户是一个散列:

b.user.class # => Hash

如何将这些"关联"干净地恢复为它们最初所在类的对象?

我有点困惑:我觉得你把你的例子抽象到了很难理解的地步。你有这样的东西吗?

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

如果是这样的话,您可以通过将这个散列传递给.new或.create方法来生成一个用户对象:

user = User.create(b.user) 

然后,您可以对这个用户对象执行您想要的操作,包括将b.user设置为等于它。

相关内容

  • 没有找到相关文章

最新更新