0

もう必要のないサブクラスがあります。一部のインスタンスは、各環境データベースに存在する場合があります。私は彼らとそのすべての扶養家族を破壊したいと思います。が使えればいいのですProgramOne.destroy_allが、明らかにクラスを削除すると存在しなくなります。Program.where(:type => 'ProgramOne')ProgramOneを使用せずに使用する方法はありますか、または SQL クエリの作成を開始するための最適なソリューションはありますか?

class Program < ActiveRecord::Base
end

class ProgramOne < Program
end
4

1 に答える 1

0

最善の解決策は、レーキタスクを作成し、そこにクラスを設定することでした。これにより、モデルファイルが削除され、すべてのインスタンスと依存関係が削除された場合でも、クラスが初期化されました。

# 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 に答える