10

db/seed.rbファイルを編集してrake db:seedコマンドを実行することにより、テーブルにデータの行をシードしました。知らず知らずのうちに、その行に間違った情報を入力してしまいました。したがって、以前に追加したデータ行を削除したいと思います。rake db:rollbackのような同じレーキ コマンドはありますかrake db:migrate

4

1 に答える 1

5

これにはいくつかの側面があります。

1: データベースに他のデータが存在しない場合にシード データを変更する場合:

rake db:seedseed.rb ファイルを更新した後、単純にやり直す必要があります。MyModel.delete_allそのモデルに何かを追加しようとする前に、持っていることを確認してください。

2: シード データを変更したいが、データベースに他のデータが追加されている

これは少し難しいです。多くの場合、ここで行う最も簡単な方法は、生の SQL ステートメントを使用するか、 PhpPpAdminPhpMyAdminなどのツールを使用してデータを手動で変更することです。


さて、これを一緒にハックする 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 に答える