Blog 2009-03-22
Проблемы с кэшированием
Все ситуации, о которых я здесь пишу, встретились мне в повседневной работе. Единственное, что я делаю — меняю название классов, чтобы не утруждать моего читателя незнакомой для него предметной областью.
Итак, у нас есть следующие модели:
# shop.rb class Shop < ActiveRecord::Base has_many :categories cached_methods do def wait_orders_count Order.count :conditions => {:status_id => Order::WAIT} end def paid_orders_count Order.count :conditions => {:status_id => Order::PAID} end def bad_orders_count Order.count :conditions => {:status_id => Order::BAD} end end end class Category < ActiveRecord::Base belongs_to :shop has_many :products end class Product < ActiveRecord::Base belongs_to :category has_many :orders end class Order belongs_to :product end Методы внутри cached_methods выполняются в том случае, если значение для них не нашлось в кэше (например, в memcached).