在 active-model-serializers 中,如何限制从 has_many 关联返回的关联对象?

In active-model-serializers, how to limit the associated objects returned from a has_many association?

所以我有

    render json: Post.all       

这个 returns 我所有的 Post 和我的 Post 序列化程序

    class PostSerializer < ActiveModel::Serializer
      has_many :comments
    end        

我希望 JSON 中返回的评论数量限制为 5 条,并有一个变量来告知是否还有更多评论。这可能吗?

编辑:我想我会通过一个新的电话来管理更多的部分。但是不知道如何限制序列化器中的评论

恐怕没有任何方法可以限制序列化程序中返回记录的数量。但是,您可以使用以下行限制控制器中的记录。

# This code returns last 5 posts    
posts = Post.last(5)

render json: posts

您是否考虑过在此处实现某种分页功能?

在你的评论模型中写一个范围方法来限制评论的数量。

在models/comment.rb

scope :limited_comments, lambda { limit(5) }

在 PostSerializer 中

has_many :comments

def comments
  Comment.limited_comments
end
has_many :comments do
  @object.comments.limit(5)
end