我想在另一个序列化程序中使用序列化程序,所以我可以在顶层添加键值对,但看起来像当我这样做时,较低级别的序列化程序不工作anymore-Rails嵌套序列化程序不使用方法来分解键
我的文件:
上述ItemsController
class ItemsController
def index
open_items = Items.
select("distinct on (open_item_id) *").
preload(:company, :project)
total = open_items.count("id")
render json: {
total: total,
items: paginate(open_items, per_page: 2), serializer: ItemsSerializer
}, status: :ok
end
end
ItemsSerializer
class ItemsSerializer < ActiveModel::Serializer
attribute :total
has_many :items, serializer: ItemSerializer
end
ItemSerializer
类ItemSerializer < ::加载ActiveModel串行 属性:id, :项目, :公司
def company
{
name: object.company.name,
id: object.company.id
}
end
def project
{
name: object.project.name,
id: object.project.id
}
end
end
我想另一个键/值对到我的串行器输出在下面,这样我可以得到这样的东西:
{
"total": 1,
"items": [
{
"id": 42920375,
"company": {
"id": 123,
"name": "CompanyName"
},
"project": {
"id": 456,
"name": "ProjectName"
}
}
]
}
,但目前,我越来越:
{
"total": 1,
"items": [
{
"id": 42920375,
"company_id": 5842,
"project_id": 191741,
}
]
}
我认为问题是'ItemsSerializer'不能按照你想要的方式工作。它需要对应于活动的型号名称。你得到的是ActiveRecord自己的'to_json'方法的结果。 – EJ2015