我有一个带有id,name和url属性的User模型以及一个带有id和show_my_url字段的关联Preferences模型。
我想将我的用户渲染为json,但如果user.preferences.show_my_url为'true',则只包含url属性。
如何根据首选项删除用户url属性,以便它不包含在to_json渲染中。
答案 0 :(得分:1)
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
答案 1 :(得分:1)
我认为您正在寻找的是Serializers:JSON Serializers in ActiveRecord。这是正确的方法。
为了解决您的问题,您可以在用户类上实现类似的功能:
def as_json
preferences.try(:show_my_url) ? to_json : to_json(:except => :url)
end