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
risposta
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
Eliminare il database, ricreare e seminare di nuovo. :) –
@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. –
Non ci sono attività rake per questo. Trova ed elimina i dati manualmente. Se prevedi che succeda di nuovo, scrivi una sceneggiatura. –