gpt4 book ai didi

ruby-on-rails - Rails 4 JSON 渲染的重大变化?

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:51 25 4
gpt4 key购买 nike

我在 Rails 4 上启动了一个新应用程序,我注意到默认情况下 JSON 渲染的实现方式似乎发生了重大变化,但我找不到任何地方写的,所以我想知道是否有人可以提供我对 (1) API 是否真的发生了变化以及 (2) 我如何获得我需要的行为(即旧行为)有一些见解。

特别是,我所看到的是,在 Rails 3 中

@answer.as_json

...会返回...

{
id: 1,
body: "lorem ipsum..."
....
}

在 Rails 4 中似乎返回了相同的方法:

{
'answer':
{
id: 1,
body: "lorem ipsum..."
...
}
}

其他人能否确认此行为已更改?除了为每个模型覆盖 as_json 之外,有什么方法可以恢复旧行为?

这个新实现使得返回包含多个模型的 JSON 响应变得更加麻烦(现在必须通过 Controller 操作中的“render :json ...”调用中的散列合并或通过覆盖 as_json 来完成).

最佳答案

有一个选项 ActiveRecord::Base.include_root_in_json 控制 as_json 方法的顶级行为。我猜这个名字是不言自明的。

至于一个重大的 API 更改:如果您深入研究源代码,您会发现此选项的默认值在 Rails 中更改为 true 4.0.0.beta1但后来它在 Rails 中恢复为 false 4.0.0.rc1 .

如果要确保 JSON 不包含根节点,请在 config/initializers/wrap_parameters.rb 中指定 include_root_in_json 选项:

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

关于ruby-on-rails - Rails 4 JSON 渲染的重大变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com