carriles - ¿Cómo se configura el valor de ID de registro nuevo de modelo tiene muchos / pertenece a la relación?
-
12-10-2019 - |
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.
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
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