我正在为Rails应用程序中的一个视图渲染json,以获得具有多个嵌套子对象级别的模型对象。最初,to_json足够好,因为我不需要从模型对象添加/修改/重命名任何东西。但是,我现在需要在json中插入一些URI(对于某些嵌套的子对象),这些URI不在模型对象中。我正在考虑使用RABL但是从我到目前为止所看到的情况看起来我需要指定更多的对象格式,我仍然希望默认的to_json行为,只是为了能够到达我可以在某些子对象上添加URI的点。我想要的想要的是一种在对象图上使用to_json的方法,并且能够指定只需要以不同方式处理某种类型的对象。有没有人用RABL做过类似的事情或完全了解更好的方法?
答案 0 :(得分:1)
您可以在模型中覆盖as_json,以便添加额外的东西。
例如
def some_url
"http://google.com"
end
def as_json(options={})
options = User.json_options(options)
super(options)
end
def self.json_options(options = {})
options ||= {} # need this because to_json without options will pass nil to as_json
options[:methods] ||= []
options[:methods] << :some_url
options
end
当您调用to_json时,将包含该方法。