2016-12-05 12 views
0

Ich habe ein Studentenmodell, das von einem Benutzermodell mit STI erbt. Das Benutzermodell has_one profile. Beim Erstellen eines neuen Schülers aus einem Formular erzeugt die Erstellungsaktion des Schüler-Controllers erfolgreich eine Instanz des Schülermodells und auch eine Instanz des Schülerprofils, die unter @student.profile überprüft werden kann. Zu diesem Zeitpunkt sind die Attribute student.id, profile.id und profile.user_id gleich Null. Unter Rails 4 konnte ich einfach @ student.save machen, und sowohl der Student als auch das dazugehörige Modell würden gespeichert. Jedoch unter Schienen 5, @ student.save gibt false zurück, mit einer FehlermeldungSo speichern Sie Assoziationen mit Schienen 5

:"profile.user"=>["can't be blank"] 

Wie kann ich @student-Instanz mit ihren Verbänden in Schienen 5 zu retten?

Der entsprechende Code ist

def create 
    @student = build_student(params[:student]) 
    if @student.save 

Antwort

0

I

Rails.application.config.active_record.belongs_to_required_by_default=false 

und im Profilmodell gesetzt hatte, hatte ich

validates :user, presence: true 

gesetzt, die alte Schule ist, so ist es klar, Warum hat es nicht mit rails 5 funktioniert. Ich habe versucht, in profile.rb

belongs_to user, required: true 

aber das hat nicht funktioniert,

"profile.user"=>["must exist"] 

Am Ende einen Fehler geben, habe ich nur

Rails.application.config.active_record.belongs_to_required_by_default=true 

und verwendet optional: true für meine Modelle, die kann gespeichert werden, ohne zu einem Benutzer zu gehören.