我正在为具有多个嵌套子对象级别的模型对象的 Rails 应用程序中的视图呈现 json。最初, to_json 已经足够好了,因为我不需要从模型对象中添加/修改/重命名任何东西。但是,我现在需要在 json 中插入一些不在模型对象中的 URI(对于一些嵌套的子对象)。我正在考虑使用 RABL,但从我目前看到的情况来看,我需要为我仍然希望默认 to_json 行为的对象指定更多格式,以便能够获得我可以在某些子对象上添加 URI。我的想法我想要的是一种在对象图上使用 to_json 并能够指定只有某种类型的对象需要以不同方式处理的方法。有没有人用 RABL 做过类似的事情或完全知道更好的方法?
问问题
96 次
1 回答
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 时,该方法将被包含在内。
于 2012-04-12T15:08:11.287 回答