Ciao! Ho molte categorie (circa 2000). Ora devo cambiare l’ordine di una sola categoria. La funzione standard “Riordina categorie” fallisce con un errore 502 dopo 1 minuto. Come si può risolvere? Grazie!
Sei riuscito a risolvere il problema? Se ricevi ancora errori di timeout, potrebbe essere necessario impostare la position della categoria direttamente dalla console Rails del sito. Tuttavia, farlo per 2000 categorie sembra piuttosto complicato.
No, non ho ancora trovato la soluzione.
Come posso farlo? Non ho alcuna idea sulla console Rails.
Ho indagato un po’ più a fondo. Con 2000 categorie, si tratterà di un’operazione piuttosto complessa: modificare la posizione di una categoria influenzerà la posizione di tutte le categorie successive. Sono riluttante a suggerire di apportare la modifica tramite la console.
Tecnicamente, non sono sicuro che si tratti di un bug. Discourse permette di creare oltre 2000 categorie, ma l’interfaccia utente non è progettata per gestire un numero così elevato di categorie. Sei riuscito in passato a riordinare le categorie senza problemi?
Le vuoi in ordine alfabetico? Una volta avevo uno script per ordinare le categorie e le sottocategorie in ordine alfabetico.
Immagino che qualcuno abbia già cercato di convincerti a usare i tag al posto loro? Probabilmente questo è solo il primo dei problemi che avrai con così tante categorie.
No, questo è il primo volta che incontro questo problema e prima non succedeva. Ho creato questo numero di categorie tramite lo script nell’interfaccia normale. Come posso farlo tramite la console?
Utilizzo i tag per un altro scopo e non posso mescolarli con altre sostanze. Ora devo spostare una sottocategoria verso l’alto. Le ho ordinate manualmente prima della creazione. L’unico modo è utilizzare la console. Avete qualche idea su come farlo?
Fareste qualcosa del genere
cd /var/discourse
./launcher enter app
rails c
per accedere alla console. Poi eseguite le vostre operazioni
Se non li capite, probabilmente è meglio non farlo da soli.
Ecco degli script che, a quanto credo, funzionavano intorno al 12 gennaio 2018. Non garantisco che funzionino ancora, ma non vedo perché non dovrebbero. Fate dei backup e accendete una candela. ![]()
# Ordina alfabeticamente tutte le categorie corrispondenti alla ricerca e le loro sottocategorie
def sort_matching_categories_and_subcategories(search)
categories = Category.where("name like ?", search)
position = 100
categories.order(:name).each do |cat|
position += 5
cat.position = position
cat.save!()
c_position = 0
children = Category.where(:parent_category_id=>cat.id)
children.order(:name).each do |c|
c_position += 5
c.position = c_position
c.save!()
end
end
end
# Ordina alfabeticamente le sottocategorie di una singola categoria corrispondente alla ricerca
def sort_matching_subcategories(search)
categories = Category.where("name like ?", search)
if categories.count > 1
puts "Trovata più di una categoria"
end
categories.order(:name).each do |cat|
c_position = 5
children = Category.where(:parent_category_id=>cat.id)
children.order(:name).each do |c|
c_position += 5
c.position = c_position
c.save!()
end
end
end
Se avete bisogno di più aiuto e avete un budget, consultate Redirecting… o inviatemi una email.
Spero che questo vi sia d’aiuto!