在 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
所以我有
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