【发布时间】:2011-12-27 19:25:35
【问题描述】:
我已经知道如何将 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
当您从订单角度查看客户密码时,它最终会发回客户密码。
理想情况下,我希望它遵循模型中定义的 as_json 规则,因此我不必为在每个子对象上包含 :customer 设置例外。
附: - 这只是一个例子,不是真实世界的场景。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 json activerecord