Rails - Come faccio a impostare il valore id del nuovo record del modello ha molte / appartiene a rapporto?
-
12-10-2019 - |
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.
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
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