Как восстановить класс ассоциаций из объекта ActiveModel, сериализованного в JSON? - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть класс, включающий 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 голосов
/ 08 февраля 2012

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

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

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

user = User.create(b.user) 

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

...