我有一个包含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设置为等于它。