Привет! У меня очень много категорий (около 2000). Сейчас мне нужно изменить порядок для одной категории. Стандартная функция «Изменить порядок категорий» выдаёт ошибку 502 через минуту. Как это можно решить? Спасибо!
Вам удалось это решить? Если вы по-прежнему получаете ошибки тайм-аута, возможно, вам придется установить position категории через консоль Rails сайта. Хотя это может показаться довольно сложным при 2000 категориях.
Нет, решение пока не найдено.
Как это сделать? Я ничего не знаю о консоли Rails.
Я немного подробнее изучил этот вопрос. При наличии 2000 категорий операция будет довольно сложной: изменение позиции одной категории повлияет на позиции всех последующих категорий. Я не хочу рекомендовать вносить изменения через консоль.
Технически я не уверен, является ли это ошибкой. Discourse позволяет создавать более 2000 категорий, но интерфейс не предназначен для работы с таким их количеством. Удавалось ли вам ранее изменять порядок категорий без проблем?
Хотите, чтобы они были в алфавитном порядке? У меня когда-то был скрипт для сортировки категорий и подкатегорий по алфавиту.
Наверное, кто-то уже пытался уговорить вас использовать вместо этого теги? С таким количеством категорий это, скорее всего, лишь первая из проблем, с которыми вы столкнётесь.
Нет, я столкнулся с этой проблемой впервые, раньше такого не было. Я создал такое количество категорий через скрипт в обычном интерфейсе. Как это можно сделать через консоль?
Я использую теги для другой цели и не могу смешивать их с другими веществами. Теперь мне нужно переместить одну подкатегорию вверх. Я сортировал их вручную перед созданием. Единственный способ — использовать консоль. Есть какие-нибудь идеи, как это сделать?
Вы можете выполнить что-то вроде
cd /var/discourse
./launcher enter app
rails c
чтобы попасть в консоль. Затем вы можете выполнить нужные действия.
Если вы не понимаете эти команды, то, вероятно, вам не стоит делать это самостоятельно.
Ниже приведены скрипты, которые, как я считаю, работали примерно 12 января 2018 года. Я не гарантирую, что они будут работать, но не вижу причин, почему бы и нет. Сделайте резервные копии и зажгите свечу. ![]()
# Сортировка по алфавиту всех категорий, соответствующих поиску, и их подкатегорий
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
# Сортировка по алфавиту подкатегорий одной категории, соответствующей поиску
def sort_matching_subcategories(search)
categories = Category.where("name like ?", search)
if categories.count > 1
puts "Найдено более одной категории"
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
Если вам нужна дополнительная помощь и у вас есть бюджет, посетите Redirecting… или отправьте мне электронное письмо.
Надеюсь, это поможет!