4

У меня есть приложение Rails 4.2 с кэш-счетчиком (настройка с belongs_to :my_model, counter_cache: true), которая устанавливает неправильные значения. Я могу буквально вызвать консоль и позвонить MyModel.associated_model_count и получить 20, а затем позвонить MyModel.associated_model.count и получить 19. Сохранение модели не устраняет это.Rails 4 счетчик кэша вне синхронизации

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

+1

Вы должны воспроизвести обстоятельства, первая причина, чтобы пойти не так. Как только это пошло не так, вы ничего не можете сделать (кроме обновления счетчика вручную) –

ответ

5

Чтобы ответить на часть вашего вопроса и, надеюсь, поможет вам в отладке, столбец счетчика обновляется только на create и destroy, поэтому сохранение объекта не приведет к обновлению счетчика. Более подробную информацию можно найти в :counter_cache записи в разделе Параметры здесь: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

Вы можете вручную запустить обновление счетчика с помощью MyModel.reset_counters(id, *counters) (http://apidock.com/rails/ActiveRecord/CounterCache/reset_counters), если вы хотите, чтобы добраться до чистого состояния для того, чтобы точно определить, где она уходит.

Связанные вопрос с полезными ответами и обсуждения: Rails counter_cache not updating correctly

Смежные вопросы