如何包含关联对象的摘要而不是对象本身。例如,如果客户有多个项目,我可以这样做:
class ClientSerializer < ActiveModel::Serializer
attributes :id, :name
has_many :projects
end
但这将返回所有关联的项目。我宁愿只带回项目计数、下载项目完整列表的 URL、项目上次更新时间等。
包含关联对象摘要的最佳方式是什么?
理想情况下,例如生成的 JSON 应该如下所示:
{
"id": 10,
"name": "My Client",
"projects": {
"count": 5,
"updated_at": "2014-09-09T13:36:20.000-04:00",
"url": "https://my.baseurl.com/clients/10/projects"
}
最佳答案
我不确定这是否是最好的方法,但我已经做到了:
class ClientSerializer < ActiveModel::Serializer
attributes :id, :name, :archive, :updated_at, :projects
def projects
collection = object.projects.to_a
{ count: collection.length,
updated_at: collection.map(&:updated_at).max,
url: projects_url }
end
end
关于ruby-on-rails - 序列化 has_many 关系的摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871455/