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

时间:2016-03-13 10:25:36

标签: ruby-on-rails json active-model-serializers

所以我有

    render json: Post.all       

这将返回我的所有帖子和我的Post序列化程序

    class PostSerializer < ActiveModel::Serializer
      has_many :comments
    end        

我希望JSON中返回的注释数量限制为5,并且有一个变量,用于指示是否有更多注释。这可能吗?

编辑:我想我会用新电话管理更多部分。但无法弄清楚如何限制序列化器中的注释

3 个答案:

答案 0 :(得分:4)

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

在models / comment.rb

scope :limited_comments, lambda { limit(5) }

在PostSerializer中

has_many :comments

def comments
  Comment.limited_comments
end

答案 1 :(得分:4)

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

答案 2 :(得分:0)

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

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

render json: posts

您是否考虑过在这里实施某种分页功能?