我已经知道如何包含has_many&的关系。 has_one与我的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
当您从Order视角查看时,它最终会发回客户密码。
理想情况下,我希望它遵循模型中定义的as_json的规则,因此我不必为每个子对象包含:customer提供例外。
P.S。 - 这只是一个不是现实场景的例子。
答案 0 :(得分:2)
我鼓励您使用RABL宝石而不是覆盖所有模型的as_json
。仅使用您想要的参数/关系来定义JSON响应要容易得多。您还可以轻松创建父/子嵌套。