0

是否有一个 ActiveRecord 设置允许我在将 ActiveRecord 对象序列化为 json 之前删除空值?

如果没有,最好的方法是什么?谢谢

4

2 回答 2

4

您可以覆盖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
于 2012-11-26T09:42:26.057 回答
1

也许

@instance.attributes.delete_if { |k, v| v.nil? }.to_json
于 2012-11-26T00:54:57.010 回答