我已经知道如何将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的异常处理了。
P.S. - 这只是一个例子,并非实际场景。
if
和unless
语句等)。 - iwasrobbed