ruby-on-rails – Rails – AMS – 为控制器的每个json响应添加密钥

我正在将我的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等,并提供了在每个方法中添加其他详细信息的选项

点赞