Учитывая три модели, например, дом, стена и дверь (дом имеет стены мая, а стена имеет много дверей):
Дом должен иметь столбец счетчика кэша для всех дверей всех связанных стен, так как это довольно дорогой запрос.
Для обновления этого столбца я использую обратные вызовы after_create и after_destroy в модели двери, которые вызывают следующие методы успешно :
def increase_house_doors_count
House.increment_counter(:doors_count, house.id)
end
def decrease_house_doors_count
House.decrement_counter(:doors_count, house.id)
end
"дом" - это метод:
def house
wall.house
end
Изначально я использовал немного другую, но (IMO) более простую версию:
def increase_house_doors_count
house.increment(:doors_count)
end
def decrease_house_doors_count
house.decrement(:doors_count)
end
Но эта последняя версия не обновляла счетчик при использовании в модели. Однако выполнение кода непосредственно из консоли прошло успешно.
Что мне здесь не хватает?
Ура!