我想使用ActiveRecord模型序列化程序来显示主键表和外键表的结果。但是,我想按外键表中的列分组显示结果。
cats = Cats.paginate(page: params[:page], per_page: 20)
render json: cats, meta: pagination(cats), adapter: :json
在ActiveRecord模型序列化程序中:
class CatSerializer < ActiveModel::Serializer
attributes :cat, :persons
def persons
object.person
end
def cat
{ id: object.id, cat_name: object.name}
end
现在cat_name不是唯一的,Person可以共享多个cat_name。请注意,Person =〉has_many Cats,但cat_name可以与多个Person相似。如何以这种格式显示数据:
"results": [
{
"cat": {
"id": 11,
"cat_name": "Luzi",
...
},
"persons": [
{
"id": 1,
"name": "andy"
},
{
"id": 2,
"name": "david"
}
另请注意,groyp_by(&:cat_name)不支持分页。
1条答案
按热度按时间zazmityj1#
您可以使用接受已groupby ActiveRecord结果的自定义序列化程序
您可以定义自定义序列化程序,如