Utiliser un objet lié B créé lors de la création de A et utilisé aussitôt

Tags: #<Tag:0x00007f2f2d2c7aa0>

Bonjour,

Lors de la création d’un objet A, je dois lui créer un objet associé B et ensuite je dois utiliser cet objet B associé dans la suite du processus de création de A.

Etant donnée qu’il me faut le row_id de A pour l’utiliser lors de la création du B associé, cette deuxième création ne peut pas se faire avant le postCreate.

Or, dans le postCreate, il est tard pour faire encore des calculs sur le formulaire de A avant la création complète.

Du coup, je dois d’abord créer le A, ce qui crée le B associé, et ensuite réouvrir le A (en update) et le revalider à nouveau. De cette manière les calculs basés sur B associés se passent bien.

Auriez-vous une idée comment est-ce que je pourrais faire cela en une seule action (à la création de A, en un seul clique sur « Enregistrer ») ?

Merci d’avance.

Abed.

Dans votre postCreate de A votre record A est complet.

Si vous y faites un validate + create B ça devrait répondre à votre besoin(sauf si vous avez mis des choses dans un pre/postUpdate de B qui ne sont donc pas appelé en création, à mettre dans un pre/postSave plutôt donc)

Merci @david pour votre retour.
Vous voulez dire que même si le record A est complet dans le postCreate, si je fais un validate + Create B, je vais pouvoir utiliser les infos du record B dans le reste des calculs nécessaires pour la bonne création du record A, et qu’au final, le record A qui était déjà complet avant de créer le B, prendra en compte ces calculs et tout cela dans une seule action ?

Je n’avais pas compris que votre A devait utiliser les résultats d’un B qu’il créé dans son postCreate.

Je pense que si vous êtes dans cette situation c’est peut être qu’il y a un pb de conception. Mais sinon vous n’avez pas le choix vous devez déclencher un update de A (ex: dans le postCreate de votre B ou à la suite de la cration de B dans le postCreate de votre A)

Faites attention de ne pas faire partir votre code en boucle infinie. Ce genre de pattern quand un objet se rappelle lui même ou quand deux objets s’appelent l’un l’autre, aboutissent souvent à des stack overflows