Rails - Come faccio a impostare il valore id del nuovo record del modello ha molte / appartiene a rapporto?

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

Domanda

Sto cercando di creare un record che in un has_many e belongs_to rapporto

i messaggi utente hasMany e post belongto utente

@post = Post.new( params[:post], :user_id => current_user.id )
@post.save

ma sono continuo a ricevere un numero errato di errore di argomenti.

Posso impostare il campo user_id del modello Post automaticamente in qualche modo? Sto usando Devise che è dove la chiamata proviene da current_user.

È stato utile?

Soluzione

Un altro paio di modi:

@post = Post.new(params[:post])
@post.user_id = current_user.id
@post.save

o

@post = current_user.posts.build(params[:post])
@post.save

Altri suggerimenti

Unisci l'hash params[:post] con {:user_id => current_user.id}:

@post = Post.new(params[:post].merge({:user_id => current_user.id}))
@post.save

Hash#merge

Se stai usando semplici has_many e belongs_to associazioni Non ci deve essere una colonna post_id nella tabella utenti. Non ci deve essere solo una colonna user_id della tabella messaggi

Con che si può fare:

@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top