【发布时间】:2019-05-21 14:02:08
【问题描述】:
在 Rails 3 中,我的应用以模型名称为根序列化了 ActiveModel 对象,例如:
{
"car": {
"id":29,
"make":"Kia",
"model":"Optima" }
}
配置在:
#config/initializers/wrap_parameters.rb
ActiveSupport.on_load(:active_record) do
self.include_root_in_json = true
end
我已将初始化程序设置 include_root_in_json 保持为 true,但当我有自定义序列化程序类时,它不会再以模型作为 JSON 的根进行序列化:
#app/serializers/car_serializer.rb
class CarSerializer < ActiveModel::Serializer
attributes :id, :make, :model
end
它的序列化如下:
{
"id":29,
"make":"Kia",
"model":"Optima"
}
我希望它使用命名的根进行序列化,但需要自定义序列化程序以从序列化中删除一些敏感字段。
如何在 Rails 4 中实现 Rails 3 默认行为,以便保持 API 向后兼容性?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 active-model-serializers activemodel