Отображение JSON Api на модель в Rails - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть доступ к JSON API, и я хотел бы отобразить API на некоторые классы в моей модели Rails 3.2.1, поэтому мне не нужна база данных.

Пример: API возвращает текущийпользователь со следующим JSON {"first_name": "John", "last_name": "Smith"}

Я хотел бы создать нового пользователя из этого JSON.Я прочитал, что могу использовать Active Model.

В основном я хотел бы сделать:

user = User.new.from_json '{"first_name":"John","last_name":"Smith"}'
Rails.logger.debug user.attributes[:first_name]
Rails.logger.debug user.attributes['first_name']
Rails.logger.debug user.first_name

Это должно напечатать "Джон" три раза.

Я использую этокласс

class User
  include ActiveModel::Serializers::JSON
  attr_accessor :attributes
end

но он не работает вообще.Если я делаю user.to_yaml, он возвращает

--- !ruby/object:User
attributes: John

Есть идеи?

Спасибо

Geoffroy

1 Ответ

2 голосов
/ 20 февраля 2012

Попробуйте следующее:

user = User.new.from_json('{"first_name":"John","last_name":"Smith"}', false)

Если это не решило вашу проблему, следует выполнить следующее, поскольку внутри from_json метод использует ActiveSupport::JSON.decode

User.new(ActiveSupport::JSON.decode('{"first_name":"John","last_name":"Smith"}'))
...