2011-07-27 7 views
2

私はテーブルを持っています(それは呼ばれていないかもしれません)ユーザと投稿。私はそれを拭きたいので、Postsテーブル(おそらくそれはデータベースと呼ばれる)に多くのテスト投稿を追加しました。私はrake db:resetを使うことができることを知っていますが、それもUsersテーブルを消去します。レールで特定のテーブルのみをリセットするには

特定のテーブルのみをリセットする方法を知っている人はいますか?

答えて

7

このためにレーキタスクを作成する方がよい場合があります。あなたが望むのであれば、 'db'の内部で名前空間を割り当てることもできます。ここでチェックし、すくいタスクの作成に関する詳細情報についてはhttp://apidock.com/rails/ActiveRecord/Relation/delete_all

http://jasonseifer.com/2010/04/06/rake-tutorial

をここDELETE_ALLチェックの詳細情報についてはModelName.delete_all

:uは、次にような何かを行うことができ、そのタスクはすなわちrake db:reset_unimportant_models

# lib/tasks/reset_unimportant_models_task.rake 
namespace :db do 
    desc "Sequentially clears out the models I don't care about" 
    task :reset_unimportant_models => :environment do 
    puts "Clearing out the BlahModel model" 
    BlahModel.destroy_all 
    puts "Finished." 
    end 
end 

あなたは何をするのでしょうか? rake db:reset_unimportant_models 、あなたがrake -Tを実行したときにuがデシベルでそれを表示されます。:その後、それはのような呼び出し、私は時々、あなただけそこかつ迅速に取得したい、rakeタスクを作成することは、よりよい解決策であることに同意しながら何とかタスク

+0

そして私はちょうど、/ libに/タスクでこの.rakeファイルを置くところ? – Vasseurth

+0

ええ、私は例を更新しました。 –

+0

'delete_all'は参照整合性エラーを生成するかもしれません(例えば、投稿のコメントが孤立しているかもしれません)。' destroy_all'を使って関連するコールバックを起動します。 – jimworm

5

何かをクリアする。

rails consoleを実行すると、そこからModelName.delete_allへの呼び出しを行うことができます。

これは貧弱な代替ソリューションです。 :-)

1

それとも、IRBコンソールを使用することができます。

irb(main):001:0> Post.delete_all 
+0

RAILS_ENV =環境引数を使用して、正しい環境(開発時のデフォルト)でコンソールを起動してください。したがって、プロダクションDB項目を操作する場合は、「irb RAILS_ENV = production」または「script/console production」でIRBを起動します。 –

関連する問題