Schienen ActiveModel Serialisierungsprogramme Rendern nicht-null Attribute
Ich möchte an einem serializer, macht not null-Attribute
class PersonSerializer < ActiveModel::Serializer
attributes :id, :name, :phone, :address, :email
end
Ist dies möglich.
Vielen Dank.
Lösung:
class PersonSerializer < ActiveModel::Serializer
attributes :id, :name, :phone, :address, :email
def attributes
hash = super
hash.each {|key, value|
if value.nil?
hash.delete(key)
end
}
hash
end
end
- Bitte zeigen Sie uns, was haben Sie bisher ausprobiert?
- Bitte postet keine Antworten durch die Bearbeitung Ihrer Frage. Sie sollten buchen Sie eine Antwort genau wie die anderen. Bitte korrigieren Sie dies.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ab version 0.10.x von
active_model_serializer
gem, müssen Sie das überschreiben der Methodeserializable_hash
stattattributes
:Dank Nabila Hamdaoui für Ihre Lösung.
Ich machte es ein wenig mehr über wiederverwendbare Module.
null_attribute_remover.rb
Verwendung:
swimlane_serializer.rb
super.keep_if { |_, value| value.present? }
super.compact
module NullAttributesRemover def attributes(*args) super.compact end end
Fügen Sie bitte die Validierung Präsenz:wahr in Ihrem Person-Modell für (:id, :name, :Telefon :Adresse :E-Mail -) Parametern, so dass Sie erhalten nicht null JSON-Wert, während Sie machen.