Обновление связанной записи из модели объединяемой таблицы

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

Вопрос

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

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

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

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

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

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

http://github.com/steveybaby/assoc_problem

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top