counter_cache для виртуального атрибута в Rails 3 - PullRequest
2 голосов
/ 14 марта 2011

Можно ли создать счетчик кеша для виртуального атрибута в Rails?

Справочная информация: У меня есть сообщения, за которые голосуют, и для которых есть counter_cache для голосов (voice_count) вбаза данных записей.

Цель: У меня есть «оценка голоса», которую я вычисляю как виртуальный атрибут, используя текущий подсчет голосов и другие переменные, есть ли способ сохранить эту оценку голосования"как кэшированное значение в моей базе данных Post?

1 Ответ

3 голосов
/ 14 марта 2011

Конечно, просто добавьте атрибут с именем «voice_score» и сохраните его.Если вы ищете «волшебный» способ сделать это - его нет.

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

def vote_score
  @vote_score ||= heavy_calculation(votes_count)
end

Или через ActiveSupport :: Memoizable :

def vote_score
  heavy_calculation(votes_count)
end
memoize :vote_score
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...