@ lars ответ будет работать для одного объекта, но для массива объектов Active Record вам придется перебирать каждый элемент массива и выполнять преобразование.Если вам нужно это преобразование каждый раз, когда вы вызываете .to_json
или render :json =>
для этой модели, вы можете переопределить функцию as_json
в модели следующим образом:
class Model
..
def as_json(options={})
super(options).reject { |k, v| v.nil? }
end
end
Кроме того, я предполагаю, что вы определили, ActiveRecord::Base.include_root_in_json = false
в вашей среде (config/initializers/active_record.rb
в Rails 3 и config/initializers/new_rails_defaults.rb
в Rails 2).В противном случае вам придется полностью реализовать функцию @ lars в модели (для получения хэша атрибута и т. Д. Требуется value[0]
).
Используйте этот метод, только если вы хотите делать это каждый раз, когда вызываете.to_json
или render :json =>
для этой модели .В противном случае вам следует придерживаться ответа @ lars.