【发布时间】:2021-09-21 23:57:00
【问题描述】:
我升级了 activemodel 序列化程序,现在输出与以前不同了。我试图让 JSON 输出与以前的输出相匹配。具体来说,我希望对象的嵌套属性与主对象处于同一级别。
例如,假设我的序列化器如下:
class DishesSerializer < ActiveModel::Serializer
has_many :ingredients
end
这将是当前的输出:
{
"dish": {
"dish_stuff_1": "dish_stuff_1",
"dish_stuff_2": "dish_stuff_2",
"dish_stuff_3": "dish_stuff_3",
"ingredients": {
"ingredients_stuff_1": "ingredients_stuff_1"
}
}
}
而我想要的是这样的:
{
"dish": {
"dish_stuff_1": "dish_stuff_1",
"dish_stuff_2": "dish_stuff_2",
"dish_stuff_3": "dish_stuff_3"
}
"ingredients": {
"ingredients_stuff_1": "ingredients_stuff_1"
}
}
我目前正在使用多个序列化程序的控制器中执行此操作,但它需要一些额外的查询并且感觉不对。我觉得在 AMS 中应该有一些 hacky 方法来做到这一点。 我试过这样的事情:
def attributes
hash = super
hash.merge!(:dishes => dishes)
end
但最终在同一层。
任何帮助将不胜感激。
【问题讨论】:
标签: ruby ruby-on-rails-4 active-model-serializers