仅显示Rails 3 as_json方法中不为null的属性

时间:2011-07-29 19:07:39

标签: ruby-on-rails

我正在使用as_json方法在我正在进行的项目中使用的几个模型中,我正在尝试的是,只有在它们不是nil时才动态显示这些属性Null ......有没有人知道如何解决这个问题?

1 个答案:

答案 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)