Immagino che si tratti di un altro problema di tabella corrotta? Tuttavia, questo si verifica su un’istanza in cui è improbabile che il database sia stato spento in modo non corretto.
Ho creato ed eliminato un badge senza membri e ha funzionato correttamente. Ho aggiunto un utente a un nuovo badge e l’ho eliminato, e anche questo ha funzionato correttamente.
Started DELETE "/admin/badges/118" for 71.89.242.121 at 2020-05-28 16:50:04 +0000
Processing by Admin::BadgesController#destroy as */*
Parameters: {"id"=>"118"}
Rendering text template
Rendered text template (Duration: 0.0ms | Allocations: 1)
Completed 500 Internal Server Error in 304ms (ActiveRecord: 0.0ms | Allocations: 114838)
ActiveRecord::InvalidForeignKey (PG::ForeignKeyViolation: ERROR: update or delete on table "badges" violates foreign key constraint "fk_rails_38ea484ed4" on table "user_profiles"
DETAIL: Key (id)=(118) is still referenced from table "user_profiles".
)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:72:in `exec_params'
Failed to handle exception in exception app middleware : PG::ForeignKeyViolation: ERROR: update or delete on table "badges" violates foreign key constraint "fk_rails_38ea484ed4" on table "user_profiles"
DETAIL: Key (id)=(118) is still referenced from table "user_profiles".
Ma non sono sicuro di dove guardare o quale indice provare a ricostruire.
No. Sembra un bug (minore) che si possa avviare l’eliminazione di un distintivo se qualcuno lo possiede. Sarebbe meglio se l’interfaccia utente lo impedisse. È assolutamente corretto che il database impedisca l’eliminazione e mantenga l’integrità referenziale.
Sono d’accordo che sia meglio non eliminare il badge piuttosto che lasciare il sistema in uno stato rotto, ma al momento restituisce un errore 500 senza alcuna spiegazione.
È vero, si tratta di un piccolo bug UX, ma impedisce a qualcuno che non sa tanto quanto te di poter eliminare un badge.
Grazie mille per il tuo aiuto. Sto aspettando di vedere cosa succederà a quegli utenti i cui profili ho eliminato!