2013-02-19 13 views
9

Ho seminato una riga di dati nella tabella modificando il file db/seed.rb ed eseguendo il comando rake db:seed. Inconsapevolmente, ho inserito alcune informazioni errate in quella riga. Quindi voglio rimuovere la riga di dati aggiunta in precedenza. C'è un comando rake per lo stesso come rake db:rollback per rake db:migrate.Annullare i dati precedentemente seminati in Rails

+2

Eliminare il database, ricreare e seminare di nuovo. :) –

+0

@Sergio Tulentsev: Sono d'accordo. Ma devo conservare i dati che erano già lì prima che facessi l'ultimo seme. Voglio solo rimuovere gli ultimi dati con seme. Potete per favore aiutarmi a farlo. –

+2

Non ci sono attività rake per questo. Trova ed elimina i dati manualmente. Se prevedi che succeda di nuovo, scrivi una sceneggiatura. –

risposta

3

Ci sono un paio di aspetti:

1: Si desidera modificare i dati seme quando è presente nel database di nessun altro dato:

Si dovrà semplicemente rifare la rake db:seed dopo l'aggiornamento del seme file .rb. Assicurati di avere MyModel.delete_all prima di provare ad aggiungere qualcosa a quel modello.

2: si desidera modificare i dati di semi, ma ci sono altri dati aggiunti al database

Questo è un po 'più difficile. Spesso la cosa più semplice da fare è quello di modificare manualmente i dati sia con dichiarazioni di SQL prime, o con l'uso di strumenti come PhpPpAdmin, PhpMyAdmin ecc


Ora, c'è possiby un modo per incidere questo insieme e quello sarebbe fare del voodoo nel file seed.rb. Così si potrebbe correre rake db:seed deseed=true, poi nella vostra seed.rb:

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

si potrebbe anche ottenere reali pazzo e fare qualcosa del genere:

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 
Problemi correlati