我有一个包含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
如何将这些“关联”干净地恢复为原来的类的对象?
答案 0 :(得分:0)
我有点困惑:我有一种感觉,你已经将你的榜样抽象到了难以理解的地步。你有类似的东西吗?
b.user
=> {:name => "Kevin", :email => "kev@foo.foo"}
如果是这样,只需将用户对象传递给.new或.create方法,就可以使用该对象创建用户对象:
user = User.create(b.user)
然后,您可以使用此用户对象执行所需操作,包括将b.user设置为等于它。