私はテーブルを持っています(それは呼ばれていないかもしれません)ユーザと投稿。私はそれを拭きたいので、Postsテーブル(おそらくそれはデータベースと呼ばれる)に多くのテスト投稿を追加しました。私はrake db:resetを使うことができることを知っていますが、それもUsersテーブルを消去します。レールで特定のテーブルのみをリセットするには
特定のテーブルのみをリセットする方法を知っている人はいますか?
私はテーブルを持っています(それは呼ばれていないかもしれません)ユーザと投稿。私はそれを拭きたいので、Postsテーブル(おそらくそれはデータベースと呼ばれる)に多くのテスト投稿を追加しました。私はrake db:resetを使うことができることを知っていますが、それもUsersテーブルを消去します。レールで特定のテーブルのみをリセットするには
特定のテーブルのみをリセットする方法を知っている人はいますか?
このためにレーキタスクを作成する方がよい場合があります。あなたが望むのであれば、 '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タスクを作成することは、よりよい解決策であることに同意しながら何とかタスク
何かをクリアする。
rails console
を実行すると、そこからModelName.delete_all
への呼び出しを行うことができます。
これは貧弱な代替ソリューションです。 :-)
それとも、IRBコンソールを使用することができます。
irb(main):001:0> Post.delete_all
RAILS_ENV =環境引数を使用して、正しい環境(開発時のデフォルト)でコンソールを起動してください。したがって、プロダクションDB項目を操作する場合は、「irb RAILS_ENV = production」または「script/console production」でIRBを起動します。 –
そして私はちょうど、/ libに/タスクでこの.rakeファイルを置くところ? – Vasseurth
ええ、私は例を更新しました。 –
'delete_all'は参照整合性エラーを生成するかもしれません(例えば、投稿のコメントが孤立しているかもしれません)。' destroy_all'を使って関連するコールバックを起動します。 – jimworm