【发布时间】:2014-05-22 00:19:07
【问题描述】:
我正在尝试使我的 API 高度连接/可抓取,因此我希望所有嵌入式对象关联都返回关联对象的 URL,以及关联对象的 ID 和属性。
例如给出:
class Car < ActiveModel::Serializer
attributes :id, :make, :model, :url
has_many :passengers
def url
car_url(object)
end
end
class Passenger < ActiveModel::Serializer
attributes :id, :name, :url
def url
passenger_url(object)
end
end
我希望http://api.approot.com/car/3.json 返回如下内容:
{
- car: {
id: 3,
make: 'Ford',
model: 'F150',
url: 'http://api.approot.com/car/3.json',
- passengers: [
- {
id: 7,
name: 'Bill',
url: 'http://api.approot.com/passengers/7'
},
- {
id: 13,
name: 'Will',
url: 'http://api.approot.com/passengers/13'
}
]
}
}
然而,鉴于此实现,ActiveModel::Serializers 当前不会在您访问 Car 时显示 Passenger 的 'url' 属性(因为我怀疑在查看访问的 Car 对象的范围内没有为 Passenger 定义 'object'通过上面的示例 URL)。
关于如何解决这个问题的任何想法?
谢谢!
【问题讨论】:
标签: ruby-on-rails api active-model-serializers