9 Stimmen

Benutzerdefinierte Serialisierung für Felder in Rails

Gibt es eine Möglichkeit, eine benutzerdefinierte Serialisierung für Felder in Rails zu haben, eine Methode, die ausgeführt wird, wenn ein Feld gespeichert und geladen wird, um von/zu einem String zu konvertieren, der letztendlich in der Datenbank gespeichert wird.

Speziell möchte ich ein Feld vom Typ Symbol wie Geschlecht haben, mit möglichen Werten :männlich und :weiblich, die "männlich" und "weiblich" in der Datenbank speichern. Es gibt einige Workarounds, wie:

def geschlecht
  read_attribute(:geschlecht).try(:to_sym)

aber das lässt obj.attributes unverändert, also ist es eine undichte Abstraktion.

0voto

loosecannon Punkte 7653

Also für nur männlich/weiblich könntest du einfach eine boolesche Spalte wie männlich erstellen und wenn sie falsch war, annehmen, dass dies weiblich bedeutet, füge Wrapper-Methoden dafür hinzu

def female? 
  return !self.male?
end

0voto

JacobEvelyn Punkte 3691

Wir haben gerade ein Juwel veröffentlicht (AttributeHelpers), das genau das macht. Haftungsausschluss: Ich bin ein Betreuer des Juwels.

Es ermöglicht Ihnen, attr_symbol :gender in Ihrer Klassendefinition aufzurufen und die Serialisierung erfolgt automatisch.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X