【问题标题】:ActiveModel include_root_in_jsonActiveModel include_root_in_json
【发布时间】:2011-12-06 22:22:06
【问题描述】:

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

 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 似乎处理扩充简单模型...

【问题讨论】:

    标签: ruby activemodel


    【解决方案1】:

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

    class Foo
      include ActiveModel::Serializers::JSON
    
      # ... more includes
    
      self.include_root_in_json = false
    
      # ... model stuff
    end
    

    【讨论】:

    • 我不认为你可以为每个模型设置它,因为在 stackoverflow 的某个地方有一个问题。我目前正在使用 ActiveModel::Serializers::JSON 就像您在我的模型中一样,并且将 boot.rb 中根级别的 include_root_in_json 设置为 显然 您只能将其设置为全部或全部。
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多