带有条件的to_json:除了在rails中

时间:2011-12-19 13:58:42

标签: ruby-on-rails ruby json

我有一个带有id,name和url属性的User模型以及一个带有id和show_my_url字段的关联Preferences模型。

我想将我的用户渲染为json,但如果user.preferences.show_my_url为'true',则只包含url属性。

如何根据首选项删除用户url属性,以便它不包含在to_json渲染中。

2 个答案:

答案 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