Rails4: ¿Cómo podría Activerecord. Encontrar un objeto con una identificación diferente al que se consulte?

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

Pregunta

Tengo un problema en el que Activerecord.Find está devolviendo filas incorrectas, pero solo en producción. Aquí hay algún código de muestra:

    <% puts group_hash %>
    <% puts Group.find(group_hash['id'].to_i).inspect %>

que sale: (todos los atributos distintos de 'ID' se han truncado para legibilidad)

    {"id"=>550058, ....}
    #<Group id: 265492, ...>

¿Cómo puede Group.END (550058) producir un registro con la ID 265492?

Creo que está sucediendo un problema similar en algunos lugares. Parece suceder cuando el registro se ha cargado recientemente (en la muestra anterior, el grupo se carga previamente en el controlador), por lo que sospecho que el caché.

El código ha estado funcionando bien bajo Rails3, el momento en que Rails4 se implementa, este problema ocurre. Desafortunadamente, no puedo reproducir el problema en ningún entorno de no producción (incluso en un clon completo de producción en un host separado, apuntando a la base de datos de producción), por lo que posiblemente la carga del servidor es un factor que contribuye.

¿Algunas ideas?

¿Fue útil?

Solución

Logré resolver esto. Todavía no tengo idea de cómo o por qué lo anterior podría haber sucedido (seguramente m = Model.find(id); (id == m.id) ¡Siempre debe ser cierto!), Aunque sospecho que el caché, ya que parecía suceder solo si el caché estaba preparado.

Hice lo siguiente, creo que algo en estos pasos resolvió el problema:

  1. podado mi Gemfile Eliminar algunas gemas no utilizadas como Dalli y eliminar la restricción de la versión todos menos algunos casos para permitir la actualización.
  2. correr bundle update resultando en muchas dependientes actualizadas
  3. Me usaron un buildpack personalizado en Heroku (bifurcado del Ruby One oficial), retiré los últimos meses de cambios aguas arriba.

Gracias a todos los que leen y comentaron. Supongo que algo estaba mal en mis dependencias de gemas o entorno de Heroku.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top