Un utente ha eliminato tutti i suoi post, uno dei quali era il post “about” per una categoria. Abbiamo ripristinato il post e cambiato la proprietà all’account di sistema, tuttavia appare ancora “eliminato” a un amministratore e mostra un errore quando un non amministratore visita il post:
Non sono sicuro se funzionerà, ma prova a ricostruire l’HTML del post. Puoi farlo facendo clic sui 3 puntini –\u003e Chiave inglese –\u003e “Ricostruisci HTML”.
Quando si utilizza il pulsante Elimina tutti i post nella pagina di amministrazione dell’utente, l’argomento “about” viene eliminato. (In altri casi la proprietà viene trasferita a @system)
Potresti creare una nuova categoria e spostare tutti gli argomenti in essa e poi eliminare la vecchia categoria. Ma questa è più una soluzione temporanea che una correzione.
Anche se l’ho appena riprodotto sul mio sito di test e annullandone l’eliminazione è tornato subito indietro, quindi non sono sicuro di quale sia questo particolare problema.
È possibile scambiare il topic_id dell’argomento “About” con uno nuovo utilizzando la console Rails, ma la “nuova sostituzione della categoria” potrebbe essere un’opzione più semplice tramite l’interfaccia utente.
Ci sono due problemi particolarmente sfortunati in combinazione.
Quando si utilizza “elimina tutti i post” nella pagina di amministrazione dell’utente, il post “informazioni sulla categoria” viene eliminato. (Ma è possibile annullarne l’eliminazione)
Quando hai eliminato post di cui l’autore è stato eliminato e cambi la proprietà prima di annullare l’eliminazione del post, non puoi annullare l’eliminazione del post. (Come soluzione alternativa, puoi eliminare l’argomento e annullarne l’eliminazione. Questo annulla l’eliminazione del primo post)
Quindi, quando:
crei un utente di test e una categoria di test,
rendi l’utente di test il proprietario dell’argomento “informazioni sulla categoria”,
elimini tutti i loro post dalla pagina di amministrazione dell’utente,
(facoltativo) crei un altro argomento di proprietà dell’utente di test,
(facoltativo) rispondi a entrambi gli argomenti utilizzando un altro utente,
elimini l’utente di test,
cambi la proprietà dell’argomento “informazioni” (e dell’altro argomento),
provi ad annullare l’eliminazione dei post,
ricevi un errore, perché non puoi annullare l’eliminazione del post. Nota a margine: le risposte negli argomenti sono visibili ad altri utenti, ma non possono vedere il primo post.
Suppongo che potremmo creare una nuova categoria e fare uno scambio, tuttavia ciò significherebbe che gli utenti che si sono iscritti/silenziati/qualunque cosa alla categoria originale dovrebbero rifare ciò con quella nuova?
Non ho paura della console Rails, quindi se assegnare un nuovo topic_id è il modo più “corretto” di strutturare le cose, allora sono propenso a farlo. Ma apprezzerei un po’ di aiuto con i comandi specifici da eseguire; sarebbe qualcosa come Category.find(10).topic_id = 723…?
D’altra parte:
…forse questo è un modo più veloce per risolvere? (Anche se vedo solo “Archivia argomento” e non “Elimina argomento” nel menu dell’icona a forma di chiave inglese…)
Non l’ho testato approfonditamente quanto altri qui (grazie!!), ma mi sembra che la soluzione al problema indicato nel primo post sia piuttosto semplice.
non consentire la cancellazione degli argomenti “Chi siamo” dall’amministrazione utenti (da parte di moderatori/amministratori del sito)
Quando si tenta di eseguire questa operazione, impedirlo e visualizzare un messaggio di errore informativo. Sto spostando la discussione in Contribute > Bug perché è un bug che gli argomenti “Chi siamo” possano essere cancellati nel caso sopra descritto.
Ho appena creato un utente di test e l’ho utilizzato per creare una categoria, poi ho cancellato l’utente dall’amministrazione utenti. Mi ha permesso di cancellare l’utente direttamente anche se aveva un argomento. La paternità dell’argomento “Chi siamo” è stata trasferita all’utente di sistema! Quindi almeno questo caso d’uso sembra essere piuttosto sicuro a questo riguardo.
Ho anche provato il caso di cancellazione auto (è necessario prima declassare l’utente per vedere il pulsante di cancellazione dell’account). Anche la cancellazione di quell’utente ha trasferito la paternità degli argomenti al sistema. Inoltre, noto che il valore predefinito per delete user self max post count è impostato a 1, il che significa che, per impostazione predefinita, non è possibile per un utente cancellarsi se ha più di un argomento. Quindi siamo comunque al sicuro qui.
E ho provato a cancellare l’utente tramite l’amministrazione utenti. Curiosamente, finché c’era solo l’argomento “Chi siamo” non ho visto il pulsante di cancellazione del messaggio. Ma dopo aver creato un secondo argomento, il pulsante di cancellazione del messaggio è apparso. Selezionarlo e digitare il testo lungo di conferma ha funzionato – sono riuscito a cancellare i messaggi dell’utente, incluso l’argomento “Chi siamo”. Finalmente una riproduzione!
E infine, sono riuscito anche a cancellare l’argomento “Chi siamo” utilizzando le azioni multiple. Un’altra riproduzione! Ops, ora vedo che non riesco a riprodurre la cancellazione degli argomenti “Chi siamo” tramite azioni multiple. Semplicemente fallisce silenziosamente.
Alla luce di quanto sopra, possiamo ignorare i casi di cancellazione utente (tramite amministrazione utenti e cancellazione auto) perché la paternità viene trasferita al sistema.
Ho anche provato a spostare il post “about” in un argomento diverso. Funziona e poi appare un timer di eliminazione, ma l’argomento non viene eliminato dopo x giorni. Il timer scompare semplicemente. Quindi questo funziona bene.
Questo potrebbe benissimo impedirne il ripetersi in futuro.
Detto questo, come dovrei recuperare dalla situazione attuale, in cui gli utenti vedono una pagina di errore quando cercano di leggere il post “About” per questa categoria, anche se il post è di proprietà dell’utente system?
Non ho ancora provato nulla; speravo che qualcuno intervenisse con “sì, questo è il comando corretto” o “no, non farlo, rovinerà tutto”…
@alxndr puoi confermare che stai auto-ospitando, non sul nostro hosting? Se sei sul nostro hosting o passi al nostro hosting, puoi contattare il nostro team di supporto e uno dei nostri tecnici ti aiuterà a risolvere il problema.
Se fossi nella tua posizione, creerei semplicemente una nuova categoria e sposterei tutti gli argomenti nella nuova categoria. Sembra la cosa più semplice.
Se decidi di sperimentare con la console rails o l’API, ti trovi in un territorio inesplorato, quindi assicurati di fare un backup completo del tuo sito prima, nel caso in cui tu debba annullare la modifica!
Ha Sembra che tu non ti fidi del mio consiglio @tobiaseigen
Usare l’API sarebbe un’opzione più sicura rispetto alla console Rails, solo che non è chiaro se riuscirebbe a ripristinare questo particolare argomento a causa delle circostanze.
Non ero sicuro che l’API avrebbe funzionato, dato che ho provato cose simili nell’interfaccia utente ed è stato bloccato, ma sembra che abbia avuto un certo successo ().
In questo caso, ho usato l’endpoint per recuperare il post piuttosto che recuperare l’argomento (che è ciò che l’opzione di annullamento eliminazione nel post stava cercando di fare):
Il pulsante “annulla eliminazione di questo post” sembra utilizzare questo endpoint, tuttavia restituisce un errore 403, con errorThrown vuoto e textStatus: "error".
Tuttavia, stai dicendo che l’utilizzo della stessa route tramite un’API, e non l’interfaccia utente web, ha funzionato?
Dai miei test, il pulsante “undelete” stava cercando di utilizzare l’endpoint di recupero dell’argomento (/t/TOPIC_ID/recover) e restituiva un errore 403. Ma sembrava funzionare quando ho usato invece la versione di recupero dei post.
Non mi è chiaro come identificare l’ID del singolo Post; l’ID della Categoria è 10 e penso che l’ID dell’Argomento sia 723? Aggiornamento: Aha, l’ho trovato! C’è un data-post-id sull’elemento DOM \u003carticle\u003e…
Non vedo questo endpoint nella documentazione API… dovrebbe essere un PUT? con qualche dato? Aggiornamento: sì un PUT, senza dati — ha funzionato! Grazie @JammyDodger !!