ActiveModelSerializers.config.default_includes = '**'
我们通过序列化程序呈现注释,包括作者和一些信息。
这是使用序列化器,一切都很好
render json: comments
但是,我们还需要发送额外的元数据,因此我们将其包装成哈希。不幸的是,这不是使用序列化器,我们无法弄清楚为什么
render json: {comments: comments, upvoted: upvoted, downvoted: downvoted}
答案 0 :(得分:1)
您可能想要的是在元数据中包含upvoted和downvoted属性。要将upvoted和downvoted属性包含为元数据,必须使用json或json_api适配器。在你的控制器中有这个:
render json: comments, meta: { upvoted: upvoted, downvoted: downvoted }, adapter: :json
将呈现:
{
"comments": [
// your comments...
],
"meta": {
"upvoted": 4243,
"downvoted": 123
}
}
或者您可以为此响应创建一个模型,该模型具有注释以及upvoted和downvoted属性。
答案 1 :(得分:0)
根据git
https://github.com/rails-api/active_model_serializers/issues/2102#issuecomment-293292697
如果我们渲染哈希值而不是集合,则无法自动使用序列化程序。解决方法是
json = Hash.new
json[:comments] = ActiveModel::SerializableResource.new(comments)
json[:upvoted] = upvoted
json[:downvoted] = downvoted
render status: :ok, json: json