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/in eine Zeichenfolge zu konvertieren, die letztendlich in der Datenbank gespeichert wird .Benutzerdefinierte Serialisierung für Felder in Rails
Speziell was ich tun möchte, ist ein Feld des Typs Symbol wie Geschlecht, mit möglichen Werten: männlich und: weiblich speichern "männlich" und "weiblich" in der Datenbank. Es gibt einige Workarounds, wie:
def gender
read_attribute(:gender).try(:to_sym)
end
aber das lässt obj.attributes unverändert, so ist es eine undichte Abstraktion.
Der Detaillink scheint jetzt leider tot zu sein. Gab es einen Grund, warum Sie 'dump' und' load' als Instanzmethoden definiert haben und eine neue Instanz in 'serialize' übergeben haben? Anstatt sie als Klassenmethoden zu definieren und die Klasse in 'serialize' zu übergeben? Ich versuche nur zu verstehen, danke! – plainjimbo
Ich mache hier eine wilde Aufnahme im Dunkeln, aber es sieht so aus, als ob die ActiveRecord-Serialisierung jedes Objekt verwendet, das auf ': dump' und': load' reagiert. Also, nein. Es gibt keinen Grund, warum dies Instanzmethoden im Gegensatz zu Klassenmethoden sind. – RyanScottLewis