Я изучаю Rails и попал в небольшую проблему.Я пишу простое приложение со списками задач, поэтому модели выглядят примерно так:
class List < ActiveRecord::Base
has_many :tasks
has_many :undone_tasks, :class_name => 'Task',
:foreign_key => 'task_id',
:conditions => 'done = false'
# ... some validations
end
Таблица для модели List
имеет столбцы tasks_counter
и undone_tasks_counter
.
class Task < ActiveRecord::Base
belongs_to :list, :counter_cache => true
# .. some validations
end
С таким кодом есть attr_readonly :tasks_counter
для List
экземпляров, но я хотел бы также иметь счетчик для отмененных задач.Есть ли способ, чтобы Rails автоматически кэшировал несколько счетчиков.
Пока мне удалось создать TasksObserver
, который увеличивает или уменьшает Task#undone_tasks_counter
, но, возможно, есть более простой способ.