Обновление связанной записи из модели таблицы соединений - PullRequest
0 голосов
/ 14 января 2010

У меня есть has_many: через отношения, связывающие игроков с командами через менеджмент.

Я хочу иметь счетчик на столе команд (немного похожий на кэш счетчика), который сообщает мне, сколько новых ассоциаций было с начала недели. Конечно, кеш счетчика не будет работать, потому что он всегда будет давать все ассоциации, которые когда-либо были созданы.

Я пытался обновить связанную команду из модели управления. Это никогда не удается. Несмотря на то, что приращение в связанную команду, похоже, сохранено в порядке, после создания связи мой счетчик все еще равен 0.

Я также пытался использовать наблюдателя. Наблюдатель был вызван, как я и ожидал, я смог получить команду, но все обновления к ней, опять же, не были сохранены.

Я уверен, что упускаю что-то очевидное! Как рельсы способ реализовать это?

Я установил github, чтобы проиллюстрировать проблему, запуск rake spec не удастся.

http://github.com/steveybaby/assoc_problem

Ответы [ 2 ]

0 голосов
/ 14 января 2010

В вашей спецификации:

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

Ваш наблюдатель обновляет ту же запись, но не тот же объект.

0 голосов
/ 14 января 2010

Я подозреваю, что проблема в том, что вы назвали поле счетчика changes, которое уже является методом ActiveRecord для проверки изменений атрибутов записи с момента последнего сохранения. Попробуйте изменить имя этого поля и посмотрите, работает ли ваш код.

...