我正在使用as_json方法在我正在进行的项目中使用的几个模型中,我正在尝试的是,只有在它们不是nil时才动态显示这些属性Null ......有没有人知道如何解决这个问题?
答案 0 :(得分:4)
您可以覆盖as_json
:
# clean_to_json.rb
module CleanToJson
def as_json(options = nil)
super(options).tap do |json|
json.delete_if{|k,v| v.nil?}.as_json unless options.try(:delete, :null)
end
end
end
# foo.rb
class Foo < ActiveRecord::Base
include CleanToJson
end
用法:
@foo.as_json # Only present attributes
@foo.as_json(:null => true) # All attributes (former behavior)