J'ai deux modèles avec une association une à plusieurs. Je souhaite définir une valeur par défaut sur le modèle enfant à l'initialisation en fonction de certains états du parent. Cela implique d'avoir un feu de rappel After_Initialize sur l'enfant qui doit accéder au parent par l'intermédiaire de l'association d'appartenance. Le problème est que lorsque j'instire l'enfant à l'aide de la méthode de construction, l'association au parent est nulle dans le rappel After_Initialize. Est-ce que ce comportement attendu? Je suis sur Rails 3.0.6
Un exemple de jouet: p> et dans un contrôleur: p> Dans l'appel à set_default_value, Merchant est nul s'il semble qu'il ne devrait pas être. P> p>
3 Réponses :
Je changerais le code comme suit: puis modifiez votre appelant sur: p> aussi, j'ai trouvé après_Initialiser rappels pour être lent. Une autre option est donc de déplacer la logique dans le constructeur pour le produit. P> Ceci élimine également la loi de la violation de Demeter du code (c'est-à-dire que le produit ne devrait pas savoir / soin de ce que l'état du marchand est). p> p>
Je suis sur les rails 2.3 et je peux confirmer que ne renvoie pas la bonne association de marchand_id dans un rappel après_initialize p> mais j'ai constaté que cela Travaillez correctement avec P> product = merchant.products.new
Vous recherchez probablement inverse_of code>
Pourquoi recherchent-ils inverse_of code>?
L'instance de marchand d'origine a-t-elle déjà été sauvée, avant d'appeler Merchant.Products.Build?
Oui, le commerçant serait un enregistrement existant dans la DB afin qu'il aurait un identifiant valide.
J'ai essayé presque exactement comment vous l'avez et cela a fonctionné pour moi. Seule la différence est que
Produits de classe code> doit être
produit de classe code> sans le
S code>.
Juste désolé qui était une faute de frappe dans la question. Édité que. Mu et Chris, lorsque vous dites que cela a fonctionné pour vous, avez-vous vérifié l'identifiant du marchand dans le rappel ou après la construction de l'objet résultant? Dans ma situation, l'identifiant du commerçant est correct dans l'objet produit résultant, mais nil dans le rappel.
Je suis coincé avec le même problème. Avez-vous trouvé une solution pour cela?