Pregunta

Tengo un has_many:. Través de la relación que asocia a los jugadores a los equipos participan en gestiones

Quiero tener un contador en la tabla de equipos (un poco como una caché de venta libre) que me dice cuántas asociaciones de nuevo se han producido desde el inicio de la semana. Por supuesto, un contador de caché no funcionará porque siempre dará todas las asociaciones que jamás se hayan creado.

He intentado actualizar el equipo asociado desde dentro del modelo de gestiones. Esto nunca sucede. A pesar de que el incremento para el equipo asociado parece estar guardado bien, después de crear la asociación de mi contador está siendo 0.

También intentado utilizar un observador. El observador fue llamado como yo esperaba, yo era capaz de recuperar el equipo, pero las actualizaciones a que, de nuevo, no se salvaron.

Estoy seguro de que me falta algo obvio! ¿Cuál es el camino carriles para implementar esto?

I fijó un github para ilustrar el problema, corriendo rake spec fallará.

http://github.com/steveybaby/assoc_problem

¿Fue útil?

Solución

En su especificación:

fanteam_spec.rb

it "should be able to create a fanteam" do
    @fanteam.save
    @fanteam.changes.should be(0)
    @fanteam.should be_valid
    @fanteam.players << Factory.build(:player)

    @fanteam.reload # this is what you are forgetting

    @fanteam.changes.should be(1)
  end

Básicamente el observador actualiza el mismo registro, pero no el mismo objeto.

Otros consejos

Sospecho que el problema es que usted nombró el changes campo contador, que ya es un método ActiveRecord para la inspección de los cambios en los atributos de un récord desde la última vez que guardó. Intente cambiar el nombre de ese campo y ver si el código funciona.

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