是否有ActiveRecord设置允许我在将ActiveRecord对象序列化为json之前删除空值?
如果没有,最好的方法是什么? 感谢
答案 0 :(得分:4)
您可以覆盖模型中的serializable_hash
方法
def serializable_hash(options)
super(options).select { |_, v| v }
end
顺便说一句,如果您打算使用include(例如Project.all.as_json(include: :tasks)
),则需要在两个模型中覆盖serializable_hash
。
def serializable_hash(adapter_options = nil, options = {}, adapter_instance = self.class.serialization_adapter_instance)
super(adapter_options, options, adapter_instance).select { |_, v| v }
end
答案 1 :(得分:0)
也许
@instance.attributes.delete_if { |k, v| v.nil? }.to_json