Controlador de uñas parece que está guardando todos los params, pero los campos están desaparecidos cuando tire del registro - Como función de correo

Estoy vigilando mi servidor de ferrocarriles y mi consola de ferrocarriles. Todo se ve genial en mi servidor.

Cuando voy a crear un Like, mi servidor guarda todas las cosas que estoy buscando para salvar.

Observe que estoy pasando author_id, a likable_idy un likable_type. Esta asociación es polimórfica.

Like Create (0.6ms)  INSERT INTO "likes" ("author_id", "likeable_type", "likeable_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["author_id", 1], ["likeable_type", "Pin"], ["likeable_id", 34], ["created_at", "2020-12-18 04:52:49.973371"], ["updated_at", "2020-12-18 04:52:49.973371"]]
  ↳ app/controllers/api/likes_controller.rb:8
   (1.9ms)  COMMIT
  ↳ app/controllers/api/likes_controller.rb:8
  Rendering api/likes/show.json.jbuilder
  Rendered api/likes/_like.json.jbuilder (0.4ms)
  Rendered api/likes/show.json.jbuilder (2.4ms)
Completed 200 OK in 75ms (Views: 8.1ms | ActiveRecord: 20.6ms)

¡Genial! ¡Tengo el 200OK! Impresionante.

Sin embargo, cuando compruebo Like.all en la consola, Parece que el Like está siendo creado con ninguno de los params que pasé en él arriba.

[55] pry(main)> Like.all
  Like Load (0.3ms)  SELECT "likes".* FROM "likes"
=> [#]
[56] pry(main)> 

Pregunta hecha hace 3 años, 4 meses, 28 días - Por compilerhero


3 Respuestas:

  • Encontré la respuesta. Por cualquier razón, mi esquema no estaba atascado y de alguna manera tenía texto extra. Dejé caer la mesa y remigramos.

    Respondida el Dec 18, 2020 a las 05:10 - por codeglitch

    Votos positivos: 0 | Votos negativos: 0

  • El problema probablemente radica en la forma en que estás generando y utilizando el método show.json.jbuilder para visualizar los datos del Like. Parece que el archivo de vista show.json.jbuilder no está incluyendo correctamente los campos que deseas mostrar.

    Asegúrate de que el archivo show.json.jbuilder esté correctamente estructurado para incluir los campos necesarios del objeto Like. Por ejemplo, si quieres mostrar el authorid, likeabletype y likeable_id, tu archivo show.json.jbuilder debería verse algo así:

    ruby
    json.id @like.id
    json.author_id @like.author_id
    json.likeable_type @like.likeable_type
    json.likeable_id @like.likeable_id
    json.created_at @like.created_at
    json.updated_at @like.updated_at
    

    Además, asegúrate de que el controlador likes_controller.rb esté pasando correctamente el objeto Like a la vista show.json.jbuilder. Debería verse algo así:

    ruby
    

    likes_controller.rb

    def show @like = Like.find(params[:id]) end

    Y finalmente, al realizar la llamada a la acción show en tu API, asegúrate de que estás recibiendo correctamente el objeto Like con todos sus campos utilizando la ruta adecuada y pasando el id correcto.

    Si después de verificar estos aspectos sigues experimentando problemas, por favor házmelo saber para brindarte más ayuda.

    Respondida el Dec 19, 2020 a las 05:06 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Parece que estás experimentando un problema con ActiveRecord donde los atributos no se guardan correctamente en la base de datos. Aquí tienes algunos pasos para solucionar el problema:

    • Verifica los registros: Comprueba los registros de la base de datos directamente utilizando una herramienta como `rails dbconsole` o una interfaz gráfica de usuario (GUI) como `pgAdmin`. Asegúrate de que los campos que faltan están realmente ausentes en la base de datos.
    • Revisa el modelo: Asegúrate de que los campos que faltan están definidos correctamente en el modelo `Like`. Verifica la definición de la asociación polimórfica y asegúrate de que los campos `author_id`, `likeable_type` y `likeable_id` están incluidos en el modelo.
    • Depura el controlador: Utiliza un depurador como `byebug` o `pry` para detener la ejecución del código en el controlador `LikesController` y examinar el valor de los parámetros antes de guardar el registro. Esto te ayudará a determinar si los parámetros se están pasando correctamente desde la solicitud.
    • Verifica las validaciones: Asegúrate de que no hay validaciones en el modelo `Like` que impidan que se guarden los campos faltantes. Las validaciones pueden usarse para garantizar que los campos tengan ciertos valores o formatos, por lo que es importante verificar que no haya restricciones que estén causando el problema.
    • Intenta crear el registro manualmente: Crea un registro `Like` manualmente en la consola usando `Like.create(author_id: 1, likeable_type: "Pin", likeable_id: 34)` y comprueba si los campos se guardan correctamente. Esto te ayudará a aislar el problema en el código de la aplicación o en la base de datos.
    • Reinicia el servidor: A veces, los problemas con ActiveRecord pueden resolverse reiniciando el servidor de la aplicación. Intenta detener y reiniciar el servidor para ver si eso soluciona el problema.

    Si ninguno de estos pasos resuelve el problema, puedes proporcionar más detalles sobre tu código y configuración, como la definición del modelo Like, el código del controlador LikesController y los registros de la base de datos.

    Respondida el Dec 19, 2020 a las 05:16 - por Gemini

    Votos positivos: 0 | Votos negativos: 0