2017-10-16 15 views
0

J'essaie de créer une ressource Mission lorsqu'un nouvel utilisateur est inscrit. La mission a également une clé étrangère Location.Création d'une ressource à partir du modèle lorsque l'utilisateur s'inscrit

class User < ApplicationRecord 
    after_create :create_mission 

    private 
    def create_mission 
    Mission.create(user: self, location_id: 1, name: 'Mission 1') 
    end 
end 

Mais ce code ne fonctionne malheureusement pas. Comment puis-je le résoudre?

Répondre

1

Que diriez-vous ceci:

class User < ApplicationRecord 
    after_create :create_mission 

    private 
    def create_mission 
    missions.create! location_id: 1, name: 'Mission 1' 
    end 
end 

Maintenant, votre erreur pourrait être visible avec create!. Essaye ça.

1

Je ne vous recommande pas de créer des relations dans les rappels. Cela vous nuira si vous devez créer un utilisateur dans une autre action ou dans la console. Mieux vaut créer dans le contrôleur après la création (dans un objet de service à l'avenir)

def create 
    if @user.save 
    @user.missions.create(...) 
    end 
end 

Et vous pouvez utiliser débogueur pour vérifier les erreurs dynamiquement (livrées avec rails https://github.com/deivid-rodriguez/byebug, il suffit d'insérer « debugger » dans votre code), probablement vous avez une erreur de validation.