我升级了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中应该有一些简单的方法来实现这一点。我试过这样的方法:
def attributes
hash = super
hash.merge!(:dishes => dishes)
end
但最终还是在同一层。
任何帮助都将不胜感激。
1条答案
按热度按时间nbysray51#
在这种情况下,您不能创建一个新的序列化程序,其中包含您需要的所有数据—例如菜单序列化程序:
不确定使用一个返回2个根元素的序列化程序是否是一个好主意,因为这将使将来很难重用。