是否有某种方法可以在根密钥中排除模型名称的命名空间部分?
之前我使用的是Active Model Serializer 0.9版,我在localhost:3000 / api / v1 / users / 1的User
的JSON表示是这样的:
{ "user": { "id": 1, "first_name": "Foo", "last_name": "Bar" } }
我最近升级到版本0.10,现在我获得了根密钥中包含的命名空间:
{ "api/v1/user": { "id": 1,"first_name": "Foo", "last_name": "Bar" } }
我希望root键与之前一样,即“user”而不是“api / v1 / user”。
我正在使用:json
适配器。
我在GitHub上的存储库中打开了一个issue。让我们看看他们对此有何看法。
Active Model Serializers的documentation已更新。它解释了如何覆盖根密钥。
答案 0 :(得分:0)
您必须使用JSON适配器,并且通过查看代码,您有几个选项:
在呈现资源时指定root
render json: @user, root: "user"
似乎通过调用序列化程序的json_key
方法来获取根,因此如果您覆盖该方法,则应该能够在序列化程序级别定义根。
您可以在序列化程序上覆盖初始化以通过添加root选项来调用super
,因为它是在初始化Serializer基类https://github.com/rails-api/active_model_serializers/blob/b4e2ac300cdb4424549660a175c8cb777194b065/lib/active_model/serializer.rb#L109