0

我有一个model Task,每个任务都有has_many其他任务:

Class Task < ActiveRecord::Base
  belongs_to :sub_task, class_name: Task.name, touch: true
  has_many :sub_tasks, class_name: Task.name, foreign_key: :sub_task_id, dependent: :destroy
end

我可以将计数器缓存添加到每个任务具有的 sub_tasks 的数量吗?如何?

4

2 回答 2

2

是的,您可以添加计数器缓存。

class Task < ActiveRecord::Base
   belongs_to :sub_task, class_name: Task.name, touch: true, counter_cache: :sub_tasks_count
   has_many :sub_tasks, class_name: Task.name, foreign_key: :sub_task_id, dependent: :destroy
end

您需要创建迁移以向表中添加一个名为的新sub_tasks_countTasks

于 2016-02-08T10:11:52.280 回答
0

不需要做@Rubysmith 写的,你可以:

class Task < ActiveRecord::Base
  belongs_to :task, counter_cache: true
  has_many :tasks, dependent: :destroy
end

移民:

class AddTaskCounterToTasks < ActiveRecord::Migration
  def change
    add_column :tasks, :tasks_count, :integer, default: 0, null: false
  end
end
于 2019-01-03T02:52:08.590 回答