我们有一套应用程序,它们大量使用ActiveResource在整个系统中提供数据。我们还重写model#as_json
以提供额外的“只读”数据供客户端使用。这些附加数据在每个资源请求上提供,并且正在创建性能问题,特别是如果我们只需要模型数据的基本子集。是否可以请求返回数据的“变体”(类似于HTTP如何通过HEAD请求提供基本信息,以及通过GET请求获得整体响应)?
# Full response in JSON
def as_json(opts)
super(opts).merge({
"connected_person_name" => self.connected_person.name
})
end
# A Partial response in JSON
def basic_as_json(opts)
super(opts).slice("id", "name", …)
end
理想情况下,我希望能够有一个控制器respond_to { |f| … }
样式块,根据请求的某个参数选择要调用的JSON方法。我可以包含这个属性,但由于它是请求的配置,而不是模型属性,这似乎是错误的放置它的地方。我觉得这应该是请求标题的一部分,但我没有看到任何满足我需求的东西。