是否有一个活动记录设置允许我在将活动记录对象序列化为 json 之前删除空值?
如果没有,最好的方法是什么?谢谢
您可以在模型中重写serializable_hash
方法
def serializable_hash(options)
super(options).select { |_, v| v }
end
顺便说一下,如果你打算使用包括(例如 Project.all.as_json(include: :tasks)
),则需要覆盖两个模型中的serializable_hash
。
更新:版本 0.10+
def serializable_hash(adapter_options = nil, options = {}, adapter_instance = self.class.serialization_adapter_instance)
super(adapter_options, options, adapter_instance).select { |_, v| v }
end
也许
@instance.attributes.delete_if { |k, v| v.nil? }.to_json