Ich habe ein Ereignismodell. Jedes Ereignis kann mehrere Sitzungen haben.Schienen, die bestätigen, dass eine Has Many-Beziehung mindestens 1 Eintrag hat
Ich möchte sicherstellen, dass kein Modell existieren kann, ohne dass ihm mindestens eine Sitzung zugeordnet ist.
validates :sessions, :length => { :minimum => 1 }
Das Problem ist - wenn ich gehe, um zu versuchen, Sitzungen auf einem bestimmten Ereignis zu erstellen, indem Sie mein Modell-Methode aufrufen:
create_sessions()
Was tut so etwas wie:
sessions.create(event_id: id,date: x,day_of_the_week:x.strftime("%A"),classPin: pin)
für jede der Termine wird die Veranstaltung laufen.
Es schlägt mit dem Fehler zu speichern:
ActiveRecord::RecordNotSaved in EventsController#create
You cannot call create unless the parent is saved
Natürlich - von diesem Punkt der neue Ereignisaufzeichnung noch nicht gespeichert wurde - so dieser Verein noch nicht erstellt wird durch auf einer Vereinigung nicht zur Verfügung erstellen bis der Elternteil gespeichert ist!
Wie funktioniert eine Validierung zwischen dieser Art von Beziehung - weil die Validierung zum Zeitpunkt der Speicherung erfolgt .... aber ich möchte die Anzahl der Sitzungen validieren größer als 0 sein, bevor wir das Ereignis speichern!
Wird die Sitzungsvalidierung auch während der Ereignisspeicherung durchgeführt? – RenegadeAndy
Die Sitzungen werden nicht standardmäßig auf 'save' überprüft. Sie müssen' validates_associated: sessions' hinzufügen. Weitere Informationen finden Sie im [Rails Validation Guide] (http://guides.rubyonrails.org/active_record_validations.html#validates-associated). –
Funktioniert das? Wann werden die Sitzungen gespeichert? – tompave