Ruby on Railsアプリでデータベーステーブルの1つにあるすべてのレコードを削除するにはどうすればよいですか?
Ruby on Railsアプリでデータベーステーブルの1つにあるすべてのレコードを削除するにはどうすればよいですか?
回答:
SQLを使わずにその方法を探している場合は、delete_allを使用できるはずです。
Post.delete_all
または基準付き
Post.delete_all "person_id = 5 AND (category = 'Something' OR category = 'Else')"
詳細については、こちらをご覧ください。
レコードは最初に読み込まずに削除されるため、非常に高速になりますが、削除時に実行されるRailsコードに依存するカウンターキャッシュなどの機能が無効になります。
ActiveRecord
モデルではないテーブルがある可能性があると言っています。質問は「テーブル」からレコードを削除することについて尋ねます、そして私はちょうど指しているか、答えに保持されている仮定です。
BlogPost.find_each(&:destroy)
モデルがBlogPostと呼ばれる場合、次のようになります。
BlogPost.all.map(&:destroy)
MOPED: 127.0.0.1:27017 QUERY database=a_database collection=nothings selector={} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.3378ms)
すべてのテーブルのすべてのエントリを削除する場合のより最近の回答:
def reset
Rails.application.eager_load!
ActiveRecord::Base.descendants.each { |c| c.delete_all unless c == ActiveRecord::SchemaMigration }
end
詳細はeager_load
こちら。
呼び出した後、のすべての子孫にアクセスActiveRecord::Base
でき、delete_all
すべてのモデルにを適用できます。
SchemaMigrationテーブルはクリアしないように注意してください。