我有一个用户模型,它带有一个id,name和url属性以及一个带有id和show_my_url字段的关联首选项模型。to_json有条件:除了在rails中
我想呈现我的用户作为json,但只包含url属性如果user.preferences.show_my_url是'真'。
如何根据首选项删除用户url属性,以便它不包含在to_json呈现中。
我有一个用户模型,它带有一个id,name和url属性以及一个带有id和show_my_url字段的关联首选项模型。to_json有条件:除了在rails中
我想呈现我的用户作为json,但只包含url属性如果user.preferences.show_my_url是'真'。
如何根据首选项删除用户url属性,以便它不包含在to_json呈现中。
def to_json(opts={})
except = [] # Standard except, may contain some stuff you want to exclude
except << :url unless self.preferences.show_my_url
super(opts.merge(:except => except))
end
感谢,作品完善。 – nvano 2011-12-19 14:14:58
我想你要找的是串行器:JSON Serializers in ActiveRecord。这是做到这一点的正确方法。
所以对于你的问题,你可以实现这样的事情在你的用户等级:
def as_json
preferences.try(:show_my_url) ? to_json : to_json(:except => :url)
end
最简单的方法是重载'to_json'方法,如果你不需要一个默认 – Bohdan 2011-12-19 14:02:06