我正在玩rails,我正在尝试将我的模型渲染为xml和json。
现在,在我的所有模型中,我想删除created_at和updated_at列 - 并且我的to_xml / json中的每一个都添加了一个except来反对DRY。
所以我想知道我该怎么做。
我看到人们重写to_xml方法 - 但我仍然需要对每个模型都这样做 - 如果有这个地方我会需要那些列怎么办?
我正在寻找像
这样的东西xxx = :except => [:created_at, :updated_at]
在每次渲染中我都会将xxx发送给选项。
答案 0 :(得分:2)
试试这个:
xxx.to_json(:except => [ :created_at, :updated_at ])
答案 1 :(得分:2)
我最终创建了一个重写serializable_hash(用于json和xml)的模块
module DefaultRenderingModule
def serializable_hash (options = {})
if(options.has_key? :all)
super(options.except!(:all))
else
x = [:created_at, :updated_at]
if options.has_key? :except
x.append(options[:except])
end
options.merge! :except => x
super(options)
end
end
end
我把它包含在我想要这种行为的每个模型中
答案 2 :(得分:0)
检查文档http://apidock.com/rails/ActiveRecord/Serialization/to_json:
xxx.to_json(:except => [ :id, :created_at, :age ])
答案 3 :(得分:0)
答案 4 :(得分:0)
覆盖模型中的as_json。这是用于在执行
时生成json的内容渲染:json => @object
def as_json(options = {})
super(options.merge(:except => [:created_at, :updated_at]))
end
你可以玩这个 - 使用提交或不提交的选项。
使用:only,:methods和:include来完全自定义输出。