活动记录to_json排除空值



是否有一个活动记录设置允许我在将活动记录对象序列化为 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

最新更新