Ruby on rails 3.2 销毁所有不存在的子类

Ruby on rails 3.2 销毁所有不存在的子类,ruby-on-rails-3.2,Ruby On Rails 3.2,我有一个不再需要的子类。每个环境数据库中可能存在一些实例。我要消灭他们和他们所有的家属。如果能够使用ProgramOne.destroy\u all,那就太好了,但是很明显,如果我删除了这个类,它就不存在了。有没有一种方法可以在没有ProgramOne的情况下使用Program.where(:type=>'ProgramOne'),或者是开始编写SQL查询的最佳解决方案 class Program < ActiveRecord::Base end class ProgramOne <

我有一个不再需要的子类。每个环境数据库中可能存在一些实例。我要消灭他们和他们所有的家属。如果能够使用
ProgramOne.destroy\u all
,那就太好了,但是很明显,如果我删除了这个类,它就不存在了。有没有一种方法可以在没有ProgramOne的情况下使用
Program.where(:type=>'ProgramOne')
,或者是开始编写SQL查询的最佳解决方案

class Program < ActiveRecord::Base
end

class ProgramOne < Program
end
类程序
最好的解决方案是创建一个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
#Rake任务
描述“删除ProgramOne程序和从属程序”
任务:销毁\u程序\u一个\u程序=>:环境执行
一级程序<一级程序
结束
程序一,摧毁一切
结束
#迁移
类PurgeProgramOne