Schienen - Wie kann ich den ID-Wert neuen Rekord des Modells festgelegt, um Beziehung viele / gehört hat?

StackOverflow https://stackoverflow.com/questions/4517033

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.

War es hilfreich?

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
scroll top