0

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

4

1 回答 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 回答