铁路对象关系& JSON渲染

时间:2011-12-27 19:25:35

标签: ruby-on-rails ruby ruby-on-rails-3 json activerecord

我已经知道如何包含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。 - 这只是一个不是现实场景的例子。

1 个答案:

答案 0 :(得分:2)

我鼓励您使用RABL宝石而不是覆盖所有模型的as_json。仅使用您想要的参数/关系来定义JSON响应要容易得多。您还可以轻松创建父/子嵌套。

https://github.com/nesquena/rabl