2017-10-16 1 views
0

Ich versuche eine Ressource Mission zu erstellen, wenn ein neuer Benutzer angemeldet ist. Mission hat einen fremden Schlüssel Location auch.Ressource aus Modell erstellen, wenn Benutzer sich anmeldet

class User < ApplicationRecord 
    after_create :create_mission 

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

Aber dieser Code funktioniert leider nicht. Wie kann ich es lösen?

Antwort

1

Wie wäre es damit:

class User < ApplicationRecord 
    after_create :create_mission 

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

Nun könnte Ihre Fehler mit create! sichtbar sein. Versuche dies.

1

Ich empfehle nicht, Beziehungen in Rückrufe zu erstellen. Es wird Sie verletzen, wenn Sie Benutzer in einer anderen Aktion oder in der Konsole erstellen müssen. Besser ist es in der Steuerung nach der Erstellung (in einigem Dienstobjekt in der Zukunft) erstellen

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

Und Sie können Debugger Fehler überprüfen dynamisch verwenden (mit Schienen ausgeliefert https://github.com/deivid-rodriguez/byebug, nur einfügen ‚Debugger‘ im Code), wahrscheinlich Sie haben einen Validierungsfehler.

Verwandte Themen