Rails Counter Cache 在同一型号上?
Rails Counter Cache On the same model?
我有一个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 的数量添加一个计数器缓存吗?怎么样?
是的,您可以添加计数器缓存。
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_count
的新列添加到 Tasks
table。
不需要做@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
我有一个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 的数量添加一个计数器缓存吗?怎么样?
是的,您可以添加计数器缓存。
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_count
的新列添加到 Tasks
table。
不需要做@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