Я изучаю 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
, но, возможно, есть более простой способ.