Ripristino in blocco

Continuando la discussione da Miglior modo per rimuovere temporaneamente l’accesso pubblico agli argomenti di un utente?:

Sarebbe possibile abilitare un selettore di annullamento eliminazione di massa nell’elenco /u/username/deleted-posts? Per quanto ne so, richiederebbe uno script SQL/rails tecnicamente molto impegnativo e potenzialmente pericoloso per ripristinarli programmaticamente.

Affinché questa funzionalità sia più utile, sarebbe meglio differenziare tra argomenti eliminati e risposte eliminate. Forse l’URL esistente /u/username/deleted-posts potrebbe essere mantenuto, e poi aggiungere a questo /u/username/deleted-posts/topics e /u/username/deleted-posts/replies.

2 Mi Piace

Gli argomenti sono già stati eliminati e non ho una stima di quando l’utente potrebbe richiedere il ripristino degli argomenti, quindi immagino di poter aspettare che venga implementata la ri-eliminazione di massa. Non credo di essere l’unico a trovarla utile, ci sono diversi post qui che chiedono aiuto per farlo.

Questo sembra anche un modo potenzialmente più semplice e sicuro per ri-eliminare programmaticamente, supponendo che riesca a capire come generare l’elenco degli ID degli argomenti eliminati dall’utente:

Questo troverà gli argomenti eliminati creati dall’utente_id 1.

dts=Topic.with_deleted.where(user_id: 1).where("deleted_at is not null");
dts.pluck(:deleted_at, :id)
dps=Post.with_deleted.where(user_id: 1).where("deleted_at is not null");
dbs.pluck(:deleted_at, :id)

E sembra che tu possa ripristinare i post con qualcosa come

dp=dps.first
dp.deleted_at=nil
dp.deleted_by=nil
dp.save

E faresti qualcosa di simile per gli argomenti.

Se arriverà il momento di ripristinare le cose, quanto sopra dovrebbe essere sufficiente per qualcuno che conosce un minimo di rails per poterle ripristinare tutte.

A titolo informativo, se li avessi spostati in una categoria nascosta, sarebbe stato forse un po’ più facile ripristinarli tutti in blocco all’ultima revisione. Ma quando nessuna di queste cose è possibile per te, penso che sia una distinzione senza differenza.

Infine, mi scuserò per aver ancora una volta trattato una richiesta di funzionalità come Support. Penso di farlo perché non ho il potere di creare funzionalità, ma posso risolvere problemi.

4 Mi Piace

Nessun problema, Jay, lo apprezzo davvero. Naturalmente preferirei se fosse implementato un metodo GUI in Discourse, ma in caso contrario apprezzo molto che tu mi abbia guidato attraverso questo.

1 Mi Piace

È certamente un caso limite, ma cerchiamo di tenere traccia quando una funzionalità viene richiesta più volte (soprattutto dai clienti) per avere un’idea migliore di quando procedere :slight_smile:

1 Mi Piace