Supponiamo che tu abbia molti post molto vecchi che si qualificherebbero per la chiusura automatica una volta attivata tale impostazione per una categoria. Quando attivi l’impostazione, diciamo, per chiudere automaticamente i post dopo 5 anni di inattività, quando verranno chiusi automaticamente tutti quei post? Appena fai clic su Salva? Oppure c’è una pulizia automatica che avviene in background. È probabile che ciò causi problemi di prestazioni?
E seconda domanda, i post che sono stati chiusi automaticamente si riaprono se cambi l’intervallo di tempo per la categoria? Presumo di no. Presumo anche che non ci sia un modo semplice tramite l’interfaccia per riaprire in blocco. È corretto?
Per impostazione predefinita, l’impostazione di chiusura automatica su una categoria si applica solo ai topic di nuova creazione.
I topic esistenti non vengono chiusi automaticamente non appena si salva l’impostazione. Rimarranno aperti a meno che non si applichi esplicitamente la chiusura automatica ad essi.
Esiste uno script dedicato (rake topics:apply_autoclose) che può essere eseguito tramite la console del server per applicare il timer di chiusura automatica ai topic esistenti. Questo script chiude silenziosamente i topic idonei (quelli abbastanza vecchi, in base all’impostazione), riducendo al minimo le notifiche.
L’applicazione dell’impostazione a tutti i vecchi topic contemporaneamente utilizzando lo script è un’operazione in background. Se si dispone di una community molto numerosa e di molti topic vecchi, potrebbe essere necessario del tempo, ma viene eseguita lato server. L’impatto sulle prestazioni varia a seconda dell’hosting e del numero di topic, ma il rake task è progettato per azioni di massa e non dovrebbe influire gravemente sui siti Discourse sani e ben configurati.
La discussione in merito è qui:
La modifica dell’ora di chiusura automatica NON riapre i topic già chiusi (cioè, la chiusura non viene annullata).
Non esiste un’opzione nell’interfaccia utente integrata per riaprire in massa i topic chiusi.
Tuttavia, è possibile utilizzare uno script o un comando della console Rails per riaprire i topic in massa.
Topic.where(closed: true).where("created_at < 'your_date'").find_each do |topic|
topic.update_status('closed', false, Discourse.system_user)
end