如何包含关联对象的摘要而不是对象本身。例如,如果客户有has_many项目,我可以这样做:
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"
}
答案 0 :(得分:3)
我不确定这是否是最好的方法,但我让这个工作:
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
答案 1 :(得分:1)
您可以创建实例方法:
class ClientSerializer < ActiveModel::Serializer
has_many :projects
def project_count
projects.size
end
end