如何为所有RoR模型将include_root_in_json设置为false?
我试过在application.rb中设置ActiveModel :: Base.include_root_in_json = false,但它没有效果。
答案 0 :(得分:12)
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文件中。
答案 1 :(得分:5)
我不确定这对于更高版本的rails是否属实,但对于我(运行2.3.5 atm),在/config/initializers/new_rails_defaults.rb中已经有一个声明用于此设置,其中它已设置为:
ActiveRecord::Base.include_root_in_json = true
因此,如果您尝试在其他位置设置此设置,则可能会覆盖它。
答案 2 :(得分:2)
在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
答案 3 :(得分:1)
对于默认的系统范围配置,总是在初始化器中设置变量,比如config / initializers / defaults.rb
答案 4 :(得分:1)
我认为你应该在config / application.rb中设置ActiveRecord :: Base.include_root_in_json = false
不是ActiveModel :: Base
答案 5 :(得分:0)
在" config / initializers / wrap_elements.rb"中的Rails 4您可以取消注释以下内容:
ActiveSupport.on_load(:active_record) do
self.include_root_in_json = true
end