Ce dont j'ai besoin, c'est d'un moyen dans un bloc Factory.define de savoir si l'usine a été appelée en utilisant create ou build, explicitement ou simplement en utilisant la stratégie par défaut.Factory Girl: création vs construction, comportement différent
J'ai une usine qui doit ajuster manuellement les associations que l'auteur original du code a prises si loin des rails que les barfs de création normale et la construction normale peuvent être gérées. Je ne veux pas ajuster ces associations dans le cas de build, mais je dois dans le cas de créer.
J'ai cherché à voir s'il y a quelque chose d'analogue à 'current_strategy' mais je n'ai encore rien vu. Je sais que je peux distinguer using after_create vs after_build, mais l'auteur original a fait en sorte que le fait d'enregistrer l'objet sans faire les ajustements provoque un grand malheur - sauvegarder les exceptions et les ordures dans la base de données. Je n'ai actuellement aucun mandat pour réparer les "modèles" qu'il a écrits et les tests rspec existants utilisent la différenciation pour faire la bonne chose à tout moment. Dans tous les cas, les auteurs des tests antérieurs ont choisi de ne jamais utiliser create, ce qui signifie que la configuration de la plupart des données de test est un processus ardu et long.
Toute aide serait grandement appréciée - je toujours mon exercice GoogleFu mais aimerait être court-circuitée ...
Oh, cela est dans Rails 2 (/ pleurer)
merci!
définitivement la meilleure approche. Mon défi est que les modèles sont organisés de telle manière que, même s'ils ont des associations, créer et créer sur une poignée spécifique, centrale ne fonctionne tout simplement pas. vous devez appeler cette chose create_standard et new_standard qui construit tout et colle ensemble. De plus, en dépit de ses associations, il lie les modèles ensemble en définissant manuellement les identifiants de chacun des objets associés pour qu'ils aient la même valeur. Il a écrit un plugin pour lui permettre de mettre des identifiants. Il a fait tellement de mal ... – jaydel
Et tout cela a été écrit à l'origine dans Rails, ou a-t-il été converti à partir d'une autre base de code (c'est moi qui essaie de faire quelque chose de fou)? Ça a l'air d'un cauchemar. J'espère que ce n'était pas une tentative explicite d'obscurcissement (ce qui ne profite vraiment à personne à long terme). – jefflunt
Y a-t-il un espoir d'en arriver aux * raisons pour lesquelles * il a été implémenté de cette façon, afin de le restructurer de manière plus utile? Commencez-vous un peu à partir de rien ou s'agit-il d'une base de code dont vous connaissez les décisions de conception générales? – jefflunt