我通过返回JSON的简单API公开了一些资源。我想为每个资源注入路径,以便消费者不需要构建它们。类似User.all.to_json
的所需输出示例:
users: [
{user: {
id: 1,
name: 'Zaphod',
url: 'http://domain.com/users/1.json'
}},
{user: {
id: 2,
name: 'Baron Munchausen',
url: 'http://domain.com/users/2.json'
}}
];
为了生成URL,我想继续使用帮助程序,而不是用这种信息污染模型。有没有办法做到这一点?或者我最好把它放入模型中?
答案 0 :(得分:4)
如果您想要包含在json序列化中的模型方法,则可以使用内置to_json调用:methods
参数:
class Range
def url
# generate url
...
end
end
Range.find(:first).to_json(:methods => :url)
答案 1 :(得分:0)
你有没有看过这个:http://json.rubyforge.org/?
class Range
def to_json(*a)
{
'json_class' => self.class.name,
'data' => [ first, last, exclude_end? ]
}.to_json(*a)
end
def self.json_create(o)
new(*o['data'])
end
end