Question

J'ai has_many. À travers une relation associant joueurs aux équipes GRÂCE managements

Je veux avoir un compteur sur la table des équipes (un peu comme un cache de compteur) qui me dit combien de nouvelles associations ont été depuis le début de la semaine. Bien sûr, un cache de compteur ne fonctionnera pas car il sera toujours donner toutes les associations qui ont été créées jamais.

J'ai essayé de mettre à jour l'équipe associée à l'intérieur du modèle managements. Ce ne réussit jamais. Même si l'augmentation de l'équipe associée semble être enregistré OK, après l'association est créé mon compteur est toujours 0.

J'ai essayé également d'utiliser un observateur. L'observateur se est appelé comme je m'y attendais, je suis en mesure de récupérer l'équipe, mais toutes les mises à jour, encore une fois, n'a pas été enregistré.

Je suis sûr que je manque quelque chose évidente! Quel est le moyen de rails en œuvre?

Configuration I un github pour illustrer le problème, en cours d'exécution spec rake échouera.

http://github.com/steveybaby/assoc_problem

Était-ce utile?

La solution

Dans votre spec:

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

En gros votre observateur met à jour le même enregistrement, mais pas le même objet.

Autres conseils

Je suppose que le problème est que vous avez nommé le contre-champ changes, qui est déjà une méthode ActiveRecord pour inspecter les modifications apportées aux attributs d'un enregistrement depuis la dernière sauvegarde. Essayez de changer le nom de ce champ et voir si votre code fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top