counter_cache устарел в хуке after_create

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

Есть ли способ принудительно очистить кэш счетчика, чтобы я всегда видел актуальное значение в after_create?


person Matthias    schedule 19.02.2010    source источник


Ответы (1)


Убедитесь, что ваш оператор after_create :callback стоит после определения has_many/belongs_to.

Если это не работает, вы можете создать свой собственный кеш-счетчик (это не более чем вызов увеличения/уменьшения, см. add_counter_cache_callbacks) и убедитесь, что он вызывается перед вашим кодом.

person Simone Carletti    schedule 20.02.2010
comment
кстати, я мог бы обойти это, переместив обратный вызов на after_save и вернув, если self.id_changed? (что делает его эквивалентным хуку after_create, просто он вызывается позже по цепочке). - person Matthias; 20.02.2010