2012-02-08 2 views
2

У меня есть класс, включая ActiveModel, что необходимо иметь некоторые «ассоциации», как это:Как восстановить класс ассоциаций из объекта ActiveModel, сериализованного в JSON?

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

Я немного смущен: у меня такое чувство, что вы отвлекли ваш пример до такой степени, что его просто понять сложно. У вас есть что-то вроде этого?

b.user 
=> {:name => "Kevin", :email => "[email protected]"} 

?

если да, то вы можете сделать пользовательский объект из этого хэша, просто передав его .new или .create метода:

user = User.create(b.user) 

Вы можете делать то, что вы хотите с этим пользователем объекта, в том числе устанавливая b.user равным ему.

Смежные вопросы