我有一个不再需要的子类。每个环境数据库中可能存在一些实例。我想摧毁他们和他们所有的家属。能够使用ProgramOne.destroy_all
会很高兴,但很明显,如果删除该类,它将不存在。有没有方法可以在没有ProgramOne的情况下使用Program.where(:type => 'ProgramOne')
,或者是开始编写SQL查询的最佳解决方案?
class Program < ActiveRecord::Base
end
class ProgramOne < Program
end
答案 0 :(得分: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