Avec les Observateurs officiellement obsolète dans les Rails 4.0, je suis curieux de savoir ce que les autres développeurs utilisent à leur place. (Autres que l'aide de l'extrait du gem.) Alors que les Observateurs ont certainement été abusé et pourrait facilement devenir unwieldily à la fois, il y avait de nombreux cas d'utilisation en dehors de la juste cache-clairière où ils ont été bénéfiques.
Prenez, par exemple, une application qui a besoin de suivre les modifications apportées à un modèle. Un Observateur pourrait facilement surveiller les modifications sur Un Modèle et d'enregistrer ces modifications avec le Modèle B dans la base de données. Si vous voulais regarder pour les changements à l'échelle de plusieurs modèles, un seul observateur pourrait gérer cela.
Dans les Rails 4, je suis curieux de savoir quelles sont les stratégies des autres développeurs utilisent à la place des Observateurs de recréer cette fonctionnalité.
Personnellement, je penche vers une sorte de "fat controller" mise en oeuvre, lorsque ces modifications sont suivies dans chacun des modèles du contrôleur de créer/mettre à jour/supprimer la méthode. Alors qu'il gonfle le comportement de chaque contrôleur légèrement, il ne aider à la lisibilité et à la compréhension que tout le code est dans un seul endroit. L'inconvénient, c'est qu'il y a maintenant le code qui est très similaire dispersées dans plusieurs contrôleurs. L'extraction de ce code dans les méthodes d'aide est une option, mais vous êtes toujours à gauche avec les appels à ces méthodes jonché partout. Pas la fin du monde, mais pas tout à fait dans l'esprit de "skinny contrôleurs".
ActiveRecord rappels sont une autre option possible, mais un je ne suis pas personnellement aime, comme il tend à quelques deux modèles différents de trop près, ensemble, à mon avis.
Donc dans les Rails 4, no Observateurs monde, si vous aviez à créer un nouvel enregistrement après un autre record a été créé/mise à jour/détruit, ce modèle de conception utiliseriez-vous? La graisse des contrôleurs, ActiveRecord rappels, ou tout autre chose?
Je vous remercie.