Closed RonaldoSosa closed 4 years ago
Hola! Cuando haces submit del formulario para crear un servicio, dentro del terminal donde dejaste corriendo rails s
deberías poder ver los parámetros que se envían. Revisa esos parámetros y asegúrate de que exista un user_id
y que sea válido
Hola!Revise la terminal cuando hago esto y sigo sin entender porque ocurre ya que el usuario con el que lo hago existe y es valido, aquí una imagen del terminal: Y con esto supongo que se demuestra que el usuario es válido No se si también tiene que ver pero aquí va una imagen del formulario y la ruta que se usa
Si te fijas, en los parámetros no está definido nunca el user_id (aquí me refiero a los params del último bloque donde dice POST a /services). Esto pasa porque no tienes en el form un field que defina el valor de user_id. Para esto puedes hacer un hidden field (por ejemplo) donde defines el id del usuario que va a crear el servicio o (esta es la opción más correcta), ya que tienes un usuario loggeado con devise simplemente puedes usar el helper current_user
para obtener el usuario actual. Así puedes quitar la línea de tu controlador donde defines @user = User.find(...)
y simplemente crear el servicio como current_user.services.create(...)
Ya hice eso y además agregué en el controlador de Service un before_action :authenticate_user! y en los parametros agregué Y mi formulario ahora se ve así Sin embargo ahora me tira el error: ActiveModel::UnknownAttributeError (unknown attribute 'user_id' for Service.): Además de esto señalo que cuando cambie el current_user.id por el @current_user.id me dio este error: Además que el error sigue si cambio el nombre de users_id en las distintas partes de código por un user_id Además señalo que use el comando rails generate migration AddUsuarioToServices users:references para añadir la referencia de User a Service y esto me genero la migración
Ya. Veo un par de errores. En primer lugar current_user no lleva @ al inicio, debes usarlo así no más. Lo otro es que veo que tu referencia a usuarios está en plural. Es decir tienes la migración como references :services, :users
cuando debería ser user en singular. Esto hace que en tu schema tengas el atributo users_id
y no en singular. Te recomiendo que bajes esa migración (y cualquier otra que tengas con references en plural), la edites y la corras de nuevo
Con eso ya me funciona!!!Muchas gracias!!
Hola!Tengo un problema al implementar las asociaciones , lo que pasa es que cree un modelo User , con devise, y otro modelo llamado Service estos tienen una relación de 1 a N , al rellenar los modelos con has_many :services y belongs_to :user y modificar el controlador de service , cuando intento crear un nuevo servicio me tira el error ActiveRecord::RecordNotFound (Couldn't find User without an ID) , para hacer esto me guíe de https://guides.rubyonrails.org/getting_started.html , por lo que revise en línea este error se debe a que el archivo de las rutas le faltan elementos pero este no vendría siendo el caso ya que mi archivo routes tiene: También vi que se puede deber a que mi base de datos no este sincronizada o que le falta el parametro user_id en mi tabla de service pero : O también debido a que mi base de datos no este sincronizada pero luego de hacer un rails db:drop , rails db:create y un rails db:migrate el error persiste , además adjunto una foto de como luce el controlador de services: Señalo que el error también sigue cuando cambio User.find(params[:user_id]) por User.find(params[:id])