ActiveModel include_root_in_json

时间:2011-12-06 22:22:07

标签: ruby activemodel

我对这个选项感到有点困惑......可以在下面的例子中找到

 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 个答案:

答案 0 :(得分:1)

嗯... Rails source for active model有相同的例子。 你想在哪里使用它?在我的ActiveModels中,我通常会这样做:

class Foo
  include ActiveModel::Serializers::JSON

  # ... more includes

  self.include_root_in_json = false

  # ... model stuff
end