carriles - ¿Cómo se configura el valor de ID de registro nuevo de modelo tiene muchos / pertenece a la relación?

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

Pregunta

Estoy intentando crear un registro que, en un has_many y belongs_to relación

mensajes hasMany usuario y mensajes belongto usuario

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

pero me sale un número incorrecto de argumentos de error.

¿Puedo establecer el campo user_id del modelo Post automáticamente alguna manera? Estoy usando Diseñar, que es donde la llamada proviene de current_user.

¿Fue útil?

Solución

Un par de maneras:

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

O:

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

Otros consejos

Combinar el hash params[:post] con {:user_id => current_user.id}:

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

Hash#merge

Si está utilizando has_many simple y asociaciones belongs_to No tiene que haber una columna post_id en la tabla de usuarios. No solamente tiene que ser una columna user_id en la tabla de mensajes

Con que se puede hacer:

@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top