【问题标题】:How can i set include_root_in_json to false for all my RoR models?如何将所有 RoR 模型的 include_root_in_json 设置为 false?
【发布时间】:2010-12-10 10:44:38
【问题描述】:

如何将所有 RoR 模型的 include_root_in_json 设置为 false?

我尝试在 application.rb 中设置 ActiveModel::Base.include_root_in_json = false,但没有效果。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 json activemodel


    【解决方案1】:

    Model.to_json 方法用于返回代表模型的 JSON 字符串,我使用过 self.include_root_in_json = false 在模型本身中。

    但是对于整个应用程序,您可以尝试在初始化程序中设置 ActiveModel::Base.include_root_in_json = false。[编辑这不起作用。]

    [edit] ActiveRecord::Base.include_root_in_json = true 尝试将此行添加到 config/environment.rb 文件中。

    【讨论】:

    • 这也适用于我 self.include_root_in_json = false,但 ActiveModel::Base.include_root_in_json = false 会导致错误,就像它没有定义一样。 (我正在使用 Rails 3)
    • 你能试试把下面这行放到config/environment.rb ActiveRecord::Base.include_root_in_json = false
    • 我在 config/initializers/active_record.rb 中有一个包含 ActiveRecord::Base.include_root_in_json = false 的初始化程序,它对我来说很好用(我使用的是 Rails 3.0.4)。你必须记住的事情(它曾经让我失望)是,如果你更改了初始化程序,你需要重新启动服务器或重新加载控制台才能使其生效。
    【解决方案2】:

    我不确定这是否适用于更高版本的 rails,但对我来说(运行 2.3.5 atm)已经在 /config/initializers/new_rails_defaults.rb 中声明了这个设置,它被设置为:

    ActiveRecord::Base.include_root_in_json = true
    

    因此,如果您尝试在其他地方设置此设置,那么它可能会被覆盖。

    【讨论】:

    • +1 为我工作,将config/initializers/new_rails_defaults.rb 中的“true”更改为“false”。
    【解决方案3】:

    在 Rails 3.2.2 上,这已在初始化程序中设置:

    ---config/initializers/wrap_parameters.rb---

    # Disable root element in JSON by default.
    ActiveSupport.on_load(:active_record) do
      self.include_root_in_json = false
    end
    

    【讨论】:

      【解决方案4】:

      对于默认系统范围的配置,在初始化程序中设置变量总是个好主意,例如 config/initializers/defaults.rb

      【讨论】:

        【解决方案5】:

        我认为你应该在 config/application.rb 中设置 ActiveRecord::Base.include_root_in_json = false

        不是 ActiveModel::Base

        【讨论】:

          【解决方案6】:

          在 Rails 4 中的“config/initializers/wrap_elements.rb”中,您可以取消注释以下内容:

          ActiveSupport.on_load(:active_record) do
           self.include_root_in_json = true
          end 
          

          【讨论】:

            猜你喜欢
            • 2014-12-27
            • 1970-01-01
            • 1970-01-01
            • 2019-05-29
            • 2014-08-08
            • 1970-01-01
            • 2021-07-17
            • 2016-06-24
            • 2020-04-04
            相关资源
            最近更新 更多