0

我有一个不再需要的子类。每个环境数据库中可能存在一些实例。我想摧毁他们和他们所有的眷属。能够使用会很好ProgramOne.destroy_all,但显然如果我删除该类,它将不存在。有没有办法在Program.where(:type => 'ProgramOne')没有 ProgramOne 的情况下使用,或者是开始编写 SQL 查询的最佳解决方案?

class Program < ActiveRecord::Base
end

class ProgramOne < Program
end
4

1 回答 1

0

最好的解决方案是创建一个 rake 任务并在那里设置课程。这样即使模型文件被删除并且所有实例和依赖项都被删除,类也被初始化。

# Rake task
desc 'Remove ProgramOne programs and dependents'
task :destroy_program_one_programs => :environment do
  class ProgramOne < Program
  end
  ProgramOne.destroy_all
end

# Migration
class PurgeProgramOne < ActiveRecord::Migration
  def up
    Rake::Task['destroy_program_one_programs'].invoke
  end
end
于 2013-02-21T18:38:01.017 回答