2016-04-15 6 views
0

Ich habe ein Benutzermodell in meiner Rails 4 App.Rails 4 - Warum bleiben Indexdaten nach dem_destroy_all?

Ich habe in meiner Konsole gegangen und getan:

User.destroy_all 

User.count mir bestätigt, dass es keine Benutzer. Ich versuche dann wieder um sich zu registrieren, was ich bin gelassen, aber sobald ich meine E-Mail bestätigen und versuchen, sich anzumelden, erhalte ich einen Fehler, der sagt:

ERROR: duplicate key value violates unique constraint "index_users_on_email" 
DETAIL: Key (email)=([email protected]) already exists. 

Wie kann ich diesen Index-Datensätze zu beheben, so dass Diese werden auch gelöscht, wenn die User.destroy_all-Methode ausgeführt wird?

+0

welche Datenbank verwenden Sie? – uzaif

+0

psql Datenbank .. – Mel

+0

ist es wegen der Sequenz .. zurücksetzen Sie Ihre Tabelle sequence 'ALTER SEQUENCE" your_sequence_name "NEUSTART MIT 0;' – uzaif

Antwort

0

Um sicherzustellen, dass dieses Problem nicht auftritt, löschen Sie alle relevanten Daten, wenn Sie einen Benutzer löschen.

class UpdateUserForeignKey < ActiveRecord::Migration 
    def change 
    remove_foreign_key :users, :email 

    add_foreign_key :users, :email, on_delete: :cascade 
    end 
end 

Mehr über Rails Foreign Keys http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_foreign_key

+0

Hallo Vlad. Ich denke, vielleicht sind unsere Drähte gekreuzt. Ich habe versucht, die Konsole zu verwenden, um alle Datensätze in der Benutzertabelle zu zerstören. Etwas wurde beibehalten, da ich zwar den Tisch leer sehe, aber den Fehler oben erhalte, der anzeigt, dass etwas zurückgehalten wurde. Ich möchte keine Migrationen schreiben, um die Tabelle zu ändern. – Mel