我正在将我的Rails应用程序更新为active_model_serializers 0.10.4,但是我无法更新必要的功能:能够向控制器的每个json响应添加请求信息.
在AMS 0.9.x中,我过去常常使用default_serializer_options,但功能性已经消失,显然实现此目的的唯一方法是手动将元键添加到每个请求中.
有没有人找到一个解决方法来使这项工作?
最佳答案 在config / initializers / active_model_serializer.rb文件中添加以下行:
ActiveModel :: Serializer.config.adapter =:json
下面的示例将在顶层添加数据属性,并在响应中的数据键下呈现@users对象.
在你的控制器中:
def index
@users = User.all
render json: @users, root: "data"
end
如果您要使用带有元标记的JSON API模式和包含每个响应的对象的数据标记,只需将初始化程序更改为
ActiveModel :: Serializer.config.adapter =:json_api
和控制器
def index
@users = User.all
@extra_meta = {"totalCount": @users.size}
render json: @users, root: "data", meta: default_meta_attributes(@users, @extra_meta)
end
在我的情况下,default_meta_attributes位于基本控制器中并合并了一些有关请求的详细信息,如current_user_id等,并提供了在每个方法中添加其他详细信息的选项