показывая только те атрибуты, которые не равны NULL в методе Rails 3 as_json - PullRequest
2 голосов
/ 29 июля 2011

Я активно использую метод as_json в паре моделей, которые у меня есть в проекте, над которым я работаю, и я пытаюсь сделать так, чтобы эти атрибуты отображались на лету ТОЛЬКО, если они не равны nil /Нуль ... Кто-нибудь знает, как это сделать?

1 Ответ

4 голосов
/ 30 августа 2011

Вы можете переопределить 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...