Schienen - Wie kann ich den ID-Wert neuen Rekord des Modells festgelegt, um Beziehung viele / gehört hat?
-
12-10-2019 - |
Frage
Ich versuche, einen Datensatz zu erstellen, dass in in einem has_many und belongs_to Beziehung
Benutzer hasMany Beiträge und Beiträge belongto Benutzer
@post = Post.new( params[:post], :user_id => current_user.id )
@post.save
, aber ich bin halten eine falsche Anzahl von Argumenten Fehler.
Kann ich das user_id Feld des Modells Beitrag automatisch irgendwie? Ich verwende schaffen, das ist, wo der current_user Anruf kommt.
Lösung
ein paar mehr Möglichkeiten:
@post = Post.new(params[:post])
@post.user_id = current_user.id
@post.save
Oder:
@post = current_user.posts.build(params[:post])
@post.save
Andere Tipps
Zusammenführen des params[:post]
Hash mit {:user_id => current_user.id}
:
@post = Post.new(params[:post].merge({:user_id => current_user.id}))
@post.save
Siehe Hash#merge
Wenn Sie mit einfachen has_many und belongs_to Verbände es muss kein post_id Spalte in der Tabelle users sein. Es braucht nur eine user_id Spalte in der Tabelle Beiträge zu sein
Damit Sie tun können:
@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow