J'utilise beaucoup de mes propres méthodes de validation pour comparer les données d'une association à l'autre. J'ai remarqué que je vérifie constamment que mes associations ne sont pas nulles avant d'essayer d'appeler quoi que ce soit sur eux, mais je valide aussi leur présence, et donc je sens que mes chèques nuls sont redondants. Voici un exemple:Est-il possible de grouper la validation?
class House < ActiveRecord::Base
has_one :enterance, :class => Door
has_one :exit, :class => Door
validates_presence_of :enterance, :exit
validate :not_a_fire_hazard
def not_a_fire_hazard
if enterance && exit && enterance.location != exit.location
errors.add_to_base('If there is a fire you will most likely die')
return false
end
end
end
Je me sens comme je me répète en vérifiant l'existence de enterance et de sortie dans mon propre validation.
Y a-t-il plus de "The Rails Way" à faire?
l'entrée et la sortie quitteraient le processus serveur. exit est une méthode sur le noyau qui arrête la machine virtuelle. Ooops –
+1 François, j'ai omis de le mentionner dans mon post. Je pense que l'idée est toujours là. – randombits
Woops à la sortie, c'était juste un exemple que j'ai inventé. Je ne suis pas sûr de savoir comment cela va résoudre mon problème, comme si not_a_fire_hazard est dans la chaîne de validation, et entrée ou foo est nul, je vais toujours faire nil.location. Puisque la validation est simultanée (peut-être ne le sera-t-il pas dans ce cas?), Même si entry_or_foo ne passe pas, not_a_fire_hazard ne sera-t-il pas encore appelé? – lambdabutz