Средний размер обуви в рельсах - PullRequest
1 голос
/ 20 сентября 2011

У меня есть модель Shoe and Purchase, которую пользователи делают, чтобы купить обувь.

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

Очевидно, что я могу рассчитать это в режиме реального времени и кэшировать результаты, пока не было сделано никаких новых покупок. Тем не менее, я посмотрел на counter_cache в rails и понял, что это ВИД, похожий на то, чего я хочу достичь.

Я реализовал counter_cache для buyases_count в Shoe. Есть ли элегантный способ добавить в дополнительное поле total_sizes и переопределить определенные методы в реализации counter_cache, чтобы при увеличении значения buyases_counter total_sizes также обновлялся соответствующим образом?

Спасибо!

1 Ответ

0 голосов
/ 20 сентября 2011

Вы можете использовать обратный вызов.Например:

class Purchase < ActiveRecord::Base
  belongs_to :shoe
  after_create :update_total_sizes

  def update_total_sizes
    self.shoe.total_sizes += self.size
    self.shoe.save
  end
end

Не знаю о переопределении методов в реализации счетного кэша, но это довольно чистый и простой IMO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...