Jawaban:
Saya menggunakan rake db:reset
yang turun dan kemudian membuat ulang database dan termasuk file seeds.rb Anda.
http://guides.rubyonrails.org/migrations.html#resetting-the-database
Anda dapat menghapus semuanya dan membuat ulang database + seed dengan keduanya:
rake db:reset
: banyak dari schema.rbrake db:drop db:create db:migrate db:seed
: memuat dari migrasiPastikan Anda tidak memiliki koneksi ke db (server rails, sql client ..) atau db tidak akan jatuh.
schema.rb adalah snapshot dari kondisi saat ini dari database Anda yang dihasilkan oleh:
rake db:schema:dump
Jika Anda merasa tidak ingin menjatuhkan dan membuat ulang seluruh situs hanya untuk memuat ulang data Anda, Anda bisa menggunakan MyModel.destroy_all
(atau delete_all
) di file seed.db untuk membersihkan tabel sebelum MyModel.create!(...)
pernyataan Anda memuat data. Kemudian, Anda dapat mengulangi db:seed
operasi berulang kali. (Jelas, ini hanya memengaruhi tabel yang telah Anda masukkan data, bukan sisanya.)
Ada "hack kotor" di https://stackoverflow.com/a/14957893/4553442 untuk menambahkan operasi "penghilangan benih" yang mirip dengan migrasi naik turun ...
Pada Rails 5, rake
alat commandline telah alias seperti rails
sekarang
rails db:reset
dari pada rake db:reset
akan bekerja dengan baik
Anda dapat menggunakan rake db:reset
saat Anda ingin menjatuhkan basis data lokal dan mulai dengan data baru dari mana db/seeds.rb
. Ini adalah perintah yang berguna ketika Anda masih mencari tahu skema Anda, dan sering perlu menambahkan bidang ke model yang ada.
Setelah perintah reset digunakan, ia akan melakukan hal berikut: Drop database: rake db:drop
Load the schema: rake db:schema:load
Seed the data:rake db:seed
Tetapi jika Anda ingin sepenuhnya menjatuhkan database Anda, Anda dapat menggunakan rake db:drop
. Menjatuhkan basis data juga akan menghapus konflik skema atau data buruk. Jika Anda ingin menyimpan data yang Anda miliki, pastikan untuk mencadangkannya sebelum menjalankan perintah ini.
Ini adalah artikel terperinci tentang perintah database rake paling penting .