Existe-t-il un moyen d'avoir une sérialisation personnalisée pour les champs dans les rails, une méthode qui s'exécute lorsqu'un champ est enregistré et chargé pour convertir de/vers une chaîne qui est finalement enregistrée dans la base de données . Concrètement, ce que je veux faire, c'est avoir un champ de type symbole comme genre, avec des valeurs possibles: male et: female stockant "male" et "female" sur la base de données. Il y a quelques solutions de contournement, comme:Sérialisation personnalisée pour les champs dans Rails
def gender
read_attribute(:gender).try(:to_sym)
end
mais qui laisse obj.attributes inchangé, il est donc une abstraction qui fuit.
Le lien détails semble être mort maintenant, malheureusement. Y a-t-il une raison pour laquelle vous avez défini 'dump' et' load' comme des méthodes d'instance, et passez une nouvelle instance dans 'serialize'? Au lieu de les définir comme méthodes de classe et de passer la classe en «serialize»? J'essaie juste de comprendre, merci! – plainjimbo
Je suis en train de prendre une photo sauvage dans le noir, mais il semble que la sérialisation d'ActiveRecord utilisera n'importe quel objet répondant à ': dump' et': load'. Donc non. Il n'y a aucune raison pour que ce soient des méthodes d'instance par opposition aux méthodes de classe. – RyanScottLewis