diff --git a/lib/tasks/sync_count_cache.rake b/lib/tasks/sync_count_cache.rake new file mode 100644 index 000000000..b32496b95 --- /dev/null +++ b/lib/tasks/sync_count_cache.rake @@ -0,0 +1,15 @@ +namespace :sync_count_cache do + desc "更新项目自动计数字段" + task projects: :environment do + Project.includes(:praise_treads, :fork_users, :issues, :watchers, :issues, :pull_requests, :versions, :issue_tags).find_each do |project| + project.update(forked_count: project.fork_users.size, closed_issues_count: project.issues.where(status_id: 5).size) + + Project.reset_counters(project.id, :praise_treads) + Project.reset_counters(project.id, :watchers) + Project.reset_counters(project.id, :issues) + Project.reset_counters(project.id, :pull_requests) + Project.reset_counters(project.id, :versions) + Project.reset_counters(project.id, :issue_tags) + end + end +end \ No newline at end of file