2013-02-19 11 views
9

db/seed.rbファイルを編集してrake db:seedコマンドを実行して、テーブルにデータ行をシードしました。無意識のうちに、間違った情報をその行に入れます。だから私は以前に追加された行のデータを削除したい。 の場合はrake db:rollbackのようなレーキコマンドがありますか?以前にシードしたデータをRailsに元に戻す

1:

+2

ドロップデータベースを、再作成し、再びシード。 :) –

+0

@Sergio Tulentsev:私は同意します。しかし、私は最後の種子を作る前に既に存在していたデータを保存しなければなりません。私は最後にシードされたデータを削除したいだけです。あなたは私にそれを手伝ってもらえますか? –

+2

そのためのレーキタスクはありません。データを手動で検索して削除します。それが再び起こることが予想される場合は、スクリプトを書いてください。 –

答えて

3

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

あなたは、単にシードを更新した後rake db:seedをやり直す必要があります。他のデータがデータベースに存在しないときは、シード・データを変更したいです.rbファイル。そのモデルに何かを追加する前に、MyModel.delete_allがあることを確認してください。

2:あなたは、シード・データを変更したいのですが、これは少し難しいですデータベース

に追加した他のデータがあります。多くの場合、ここでは最も簡単な方法は、手動で生のSQL文のいずれかで、またはPhpPpAdminのようなツールを使用してデータを変更することで、PhpMyAdminなど


今、一緒にこれをハックするpossiby一つの方法がありますそれはseed.rbファイルでいくつかのブードーをすることになります。

if ENV['deseed'] 
    #Do your deseeding action here 
else 
    #Do your seeding here. 
end 

は、あなたも本当の狂気を得る可能性があり、このような何か:だから、あなたのseed.rbで、rake db:seed deseed=trueを実行することができ

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 
関連する問題