如何使用 Active Model Serializer 实现排序?
How can I implement sorting with Active Model Serializer?
我想做的是传递一个列列表作为运动参数进行排序,并让 AMS 根据这些参数对响应进行排序。例如,如果我使用此 url _GET /authors?sort=lastname,firstname_
,它将按姓氏然后按名字进行运动。但是,如果我这样做 GET /authors?sort=number_of_books,lastname,firstnam*
它会 return 作者基于书籍的数量,然后是姓氏和名字。
AMS 似乎默认不这样做(他们将来也不会这样做),但我可以在序列化器中做一些可以为我做的事情吗?
根据我的经验,AMS 并不真正关心排序。这似乎是您在序列化之前要做的事情。也许在控制器中或在模型中更好。
更新
@CalebSayre 如果您的排序参数只是要排序的简单字段列表,那么您可能会使用像这样简单的东西。
render json: Author.order(params[:sort]), serializer: AuthorSerializer
如果没有传递排序参数,它将跳过 order 子句。
我想做的是传递一个列列表作为运动参数进行排序,并让 AMS 根据这些参数对响应进行排序。例如,如果我使用此 url _GET /authors?sort=lastname,firstname_
,它将按姓氏然后按名字进行运动。但是,如果我这样做 GET /authors?sort=number_of_books,lastname,firstnam*
它会 return 作者基于书籍的数量,然后是姓氏和名字。
AMS 似乎默认不这样做(他们将来也不会这样做),但我可以在序列化器中做一些可以为我做的事情吗?
根据我的经验,AMS 并不真正关心排序。这似乎是您在序列化之前要做的事情。也许在控制器中或在模型中更好。
更新
@CalebSayre 如果您的排序参数只是要排序的简单字段列表,那么您可能会使用像这样简单的东西。
render json: Author.order(params[:sort]), serializer: AuthorSerializer
如果没有传递排序参数,它将跳过 order 子句。