1

Dans mon application, j'ai des réservations et des passagers où une réservation a de nombreux passagers.Impossible d'accéder aux enfants dans la méthode after_create dans Rails 5

Après avoir créé une nouvelle réservation je veux envoyer une notification à tous les passagers, donc dans mon modèle de réservation Je:

after_create :send_notification 

def send_notification 
    self.passengers.each do |passenger| 
    #DO STUFF 
    end 
end 

Cela ne fait rien et si j'essayer

puts(self.passengers.count) 

il renvoie 0.

Lorsque je l'utilisateur after_save tout fonctionne, donc je suppose que after_create il a créé le parent mais pas les enfants pour le moment.

Le problème est que je ne peux pas utiliser after_save parce que ce déclencheur aussi après la mise à jour.

Des idées?

Répondre

1

Vous pouvez ajouter la condition pour after_save:

after_save :send_notification, if: :id_changed? 
# or :id_previously_changed? I don't remember if in after_save you can access dirty attributes 
0

Changer votre rappel à ceci:

after_save :send_notification, on: :create 

Pour que votre rappel se déclenche après l'enregistrement au lieu de créer l'objet, mais ne se produire quand il est d'abord créé.