3
我已经知道如何将has_many & has_one关系的关系包含到我的JSON呈现中。我甚至知道如何排除某些属性。对于那些不知道这里是一个很好的职位:轨道对象关系&JSON渲染
Rails Object Relationships and JSON Rendering
不过,我不知道该怎么做是有它使用as_json子对象,所以我不必重新声明它对每一个父母的关系。
所以,如果我有这样的事情......
class Customer < ActiveRecord::Base
has_many :orders
def as_json(options={ })
super({ :except => :Password, :include => [:orders] }.merge(options))
end
end
class Order < ActiveRecord::Base
has_one :customer
def as_json(options={ })
super({ :include => [:customer] }.merge(options))
end
end
它结束了发送回客户密码,当您从订单角度看待它。
理想情况下,我希望它遵循模型中定义的as_json的规则,所以我不必在每个子对象中包含以下内容的异常:customer。
P.S. - 这只是一个不是真实世界场景的例子。
如何使用rabl动态更改输出?有时我想根据谁在请求数据来更改json中返回的内容。 – Altonymous 2011-12-27 22:34:47
您可以像平常一样使用相同的Ruby语法(例如'if'和'unless'语句等)。 – iwasrobbed 2011-12-27 22:52:20