ruby-on-rails - 仅显示 Rails 3 as_json 方法中不为 null 的属性

标签 ruby-on-rails

我在我正在处理的项目中的几个模型中大量使用了 as_json 方法,我想做的是仅当这些属性不为零时才动态显示这些属性/空...有人知道如何解决这个问题吗?

最佳答案

您可以覆盖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)

关于ruby-on-rails - 仅显示 Rails 3 as_json 方法中不为 null 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877835/

相关文章:

ruby-on-rails - 在 View 中使用另一个模型导致测试错误

ruby-on-rails - 使用 Hotwire Rails 时如何显示设计登录表单错误

javascript - Rails 没有为 JavaScript 请求选择正确的布局

ruby-on-rails - 从 ActiveRecord 观察者调用 rake 任务

ruby-on-rails - 如何使用 elasticsearch-rails gem 过滤查询?

ruby-on-rails - 如何使用 rspec 测试 content_for

html - 在 Rails 中,如何在文本区域中允许一些 html?

ruby-on-rails - 错误 : Could not find a valid gem 'rails' (>= 0) in any repository

ruby-on-rails - 如何在 Rake 任务中执行命令?

ruby-on-rails - Rails ActiveRecord 序列化数据 Rspec 测试