Кеш счетчика в Rails: «increment_counter» работает, «increment» - нет? - PullRequest
2 голосов
/ 06 января 2011

Учитывая три модели, например, дом, стена и дверь (дом имеет стены мая, а стена имеет много дверей): Дом должен иметь столбец счетчика кэша для всех дверей всех связанных стен, так как это довольно дорогой запрос.

Для обновления этого столбца я использую обратные вызовы 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

Но эта последняя версия не обновляла счетчик при использовании в модели. Однако выполнение кода непосредственно из консоли прошло успешно.

Что мне здесь не хватает?

Ура!

1 Ответ

2 голосов
/ 06 января 2011

Возможно, попробуйте это так:

house.increment! (: Doors_count)

Возможно, это нужно сделать на месте.

...