J'ai une application Rails avec un besoin récurrent de définition d'attributs par défaut. Parfois, l'utilisateur fournira des valeurs pour les attributs qui seront respectés, mais dans d'autres circonstances, le modèle ou l'utilisateur peut souhaiter que ces attributs soient remplacés avec des valeurs par défaut en ne tenant pas compte des valeurs d'origine. J'ai supposé que ce problème nécessitait une méthode de configuration par défaut (!
) et non-frappée pour définir des valeurs par défaut permettant à l'utilisateur et au programme de passer à l'état approprié. Le setter non affecté ne définira les valeurs par défaut que lorsqu'elles ne sont pas nulles alors que la version banged écrasera toujours les attributs par défaut. La différence est mineure:Création d'accesseurs d'attribut avec des options par défaut
class BangDiBang
attr_accessor :value
def set_default
self.value ||= do_some_suff_to_determine_default_value
end
def set_default!
self.value = do_some_suff_to_determine_default_value
end
...
end
Le problème avec ce code est que si j'avais un tas de variables à définir, je finirais en répétant le même code deux fois pour chaque variable.
Ma question est de savoir comment sortir ce code? Sauvegarde de la logique dans une méthode et ayant deux méthodes set_value
et set_value!
appelant la logique centrale avec les différents opérateurs d'affectation.
J'ai invoqué une solution: écrire la logique centrale en tant que texte, remplacer l'opération d'affectation par les méthodes de réglage et évaluer (mais cela ne semble pas correct). Comment ne pas me répéter?
Que diriez-vous de créer une préoccupation avec elle et de les inclure partout où vous en avez besoin? – Severin