ActiveModel include_root_in_json - PullRequest
       4

ActiveModel include_root_in_json

1 голос
/ 07 декабря 2011

Меня немного смущает эта опция ... которую можно найти в примере ниже

 user = User.find(1)
  user.as_json
  # => { "user": {"id": 1, "name": "Konata Izumi", "age": 16,
                  "created_at": "2006/08/01", "awesome": true} }

  ActiveRecord::Base.include_root_in_json = false
  user.as_json
  # => {"id": 1, "name": "Konata Izumi", "age": 16,
        "created_at": "2006/08/01", "awesome": true}

http://rubydoc.info/gems/activemodel/3.1.3/ActiveModel/Serializers/JSON

Почему ActiveModel требует, чтобы вы использовали ActiveRecord, чтобы сообщитьэто что вам не нужны базовые объекты в корне ваших сериализованных объектов?

Я не могу заставить это работать, в настоящее время я делаю:

require "active_model"
ActiveRecord::Base.include_root_in_json = false

Но он просто говорит, что не может найти константу "ActiveRecord", что имеет смысл, нопросто опечатка в документах или есть какая-то реальная причина для этого?ActiveRecord, похоже, решает проблемы хранения данных, ActiveModel, кажется, имеет дело с расширением простых моделей ...

1 Ответ

1 голос
/ 07 декабря 2011

Хмм ... Источник Rails для активной модели имеет тот же пример. Где вы пытаетесь его использовать? В моих ActiveModels я обычно делаю:

class Foo
  include ActiveModel::Serializers::JSON

  # ... more includes

  self.include_root_in_json = false

  # ... model stuff
end
...