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テーブルはクリアしないように注意してください。