502 erro ao tentar salvar a ordem das categorias

Olá! Tenho muitas categorias (cerca de 2000). Agora preciso alterar a ordem de 1 categoria. A função padrão “Reordenar Categorias” falha com erro 502 após 1 minuto. Como isso pode ser resolvido? Obrigado!

Conseguiu resolver isso? Se ainda estiver recebendo erros de tempo limite, talvez precise definir a position da categoria diretamente no console Rails do site. No entanto, isso parece ser um pouco complicado de fazer com 2000 categorias.

Não, ainda não encontrei a solução.

Como faço isso? Não tenho nenhuma ideia sobre o console Rails.

Analisei isso um pouco mais. Com 2000 categorias, será uma operação bastante complicada — alterar a posição de uma categoria afetará a posição de todas as categorias que vêm depois dela. Reluto em sugerir fazer a alteração diretamente pelo console.

Tecnicamente, não tenho certeza se isso é um bug. O Discourse permite criar mais de 2000 categorias, mas a interface do usuário não foi projetada para lidar com esse número de categorias. Você já conseguiu reordenar categorias no passado sem problemas?

2 curtidas

Você quer que eles fiquem em ordem alfabética? Eu já tive um script para ordenar categorias e subcategorias alfabeticamente.

Suponho que alguém já tenha tentado convencê-lo a usar tags em vez disso? Isso provavelmente é apenas o primeiro dos problemas que você terá com tantas categorias.

2 curtidas

Não, é a primeira vez que enfrento esse problema e não tinha antes. Criei essa quantidade de categorias através do script na interface normal. Como posso fazer isso pelo console?

Uso tags para outro propósito e não posso misturá-las com outras substâncias. Agora preciso mover uma subcategoria para cima. Eu as ordenei manualmente antes da criação. A única maneira é usar o console. Alguma ideia de como fazer isso?

Você faria algo como

cd /var/discourse
./launcher enter app
rails c

para acessar o console. Em seguida, você faria algo.

Se você não os entende, provavelmente não deseja fazer isso por conta própria.

Aqui estão scripts que, acredito, funcionaram por volta de 12 de janeiro de 2018. Não garanto que funcionem, mas não vejo motivo para não funcionarem. Faça backups e acenda uma vela. :wink:

# Ordena alfabeticamente todas as categorias que correspondem à pesquisa e suas subcategorias

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

# Ordena alfabeticamente as subcategorias de uma única categoria que corresponde à pesquisa
def sort_matching_subcategories(search)
  categories = Category.where("name like ?", search)
  if categories.count > 1
    puts "Found more than one category"
  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 precisar de mais ajuda do que isso e tiver orçamento, veja Redirecting… ou envie-me um e-mail.

Espero que isso ajude!

2 curtidas