我正在使用Rails 3。
使用respond_with输出JSON / XML / HTML时,默认情况下会转储所有属性。隐藏/过滤/抑制不应呈现的资源属性的好策略是什么?
文章here解释了respond_with
的作用。
答案 0 :(得分:4)
有几个选择。
您可以覆盖正在使用的模型上的as_json
方法
http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/
你可以创建一个序列化器
http://railscasts.com/episodes/409-active-model-serializers
或者您可以使用:only
to_json
选项
def index
@models = Model.all
respond_with(@models) do |format|
format.html { render }
format.json {
render json: @models.to_json(
only: [:some_attribute, :some_other_attribute]
)
}
end
end
除非你在许多动作中使用这些约束,否则我会推荐最后一个选择(使用:only
因为我认为它是最简单的但你可能觉得控制器不适合这种逻辑
还有很多方法可以做到这一点。
修改强>:
respond_with
将哈希作为第二个参数使上面更漂亮(感谢@ ck3g)
def index
@models = Model.all
respond_with @models, only: [:some_attribute, :some_other_attribute]
end