ActiveRecord to_json排除空值

时间:2012-11-26 00:51:44

标签: ruby-on-rails ruby json activerecord

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

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

2 个答案:

答案 0 :(得分:4)

您可以覆盖模型中的serializable_hash方法

def serializable_hash(options)
  super(options).select { |_, v| v }
end

顺便说一句,如果您打算使用include(例如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

答案 1 :(得分:0)

也许

@instance.attributes.delete_if { |k, v| v.nil? }.to_json
相关问题