db/seed.rb
ファイルを編集してrake db:seed
コマンドを実行することにより、テーブルにデータの行をシードしました。知らず知らずのうちに、その行に間違った情報を入力してしまいました。したがって、以前に追加したデータ行を削除したいと思います。rake db:rollback
のような同じレーキ コマンドはありますかrake db:migrate
。
8909 次
1 に答える
5
これにはいくつかの側面があります。
1: データベースに他のデータが存在しない場合にシード データを変更する場合:
rake db:seed
seed.rb ファイルを更新した後、単純にやり直す必要があります。MyModel.delete_all
そのモデルに何かを追加しようとする前に、持っていることを確認してください。
2: シード データを変更したいが、データベースに他のデータが追加されている
これは少し難しいです。多くの場合、ここで行う最も簡単な方法は、生の SQL ステートメントを使用するか、 PhpPpAdmin、PhpMyAdminなどのツールを使用してデータを手動で変更することです。
さて、これを一緒にハックする 1 つの方法が考えられます。それは、seed.rb ファイルでブードゥー教を行うことです。rake db:seed deseed=true
を実行してから、seed.rb で次のように実行できます。
if ENV['deseed']
#Do your deseeding action here
else
#Do your seeding here.
end
あなたは本当に夢中になって、次のようなことをすることさえできます:
deseed = ENV['desee']
#DANGER: Dirty hacks upcoming:
deseed? myModelCall = MyModel.method(:destroy_all): myModelCall = MyModel.method(:create)
myModelCall.call :user_id_or_whatevs => 23 #this creates or deletes a MyModel entity with the given parameters
#NOTE this might not work in all cases and I would not necessarily recommend doing this.
#<3uby
于 2013-02-19T12:48:04.913 に答える