안녕하세요! 카테고리 수가 매우 많습니다(약 2000개). 이제 카테고리 1개의 순서를 변경해야 하는데요. 표준 “카테고리 순서 변경” 기능은 1분 후에 502 오류로 실패합니다. 이 문제를 어떻게 해결할 수 있을까요? 감사합니다!
해결하셨나요? 여전히 타임아웃 오류가 발생하고 있다면, 사이트의 Rails 콘솔을 통해 해당 카테고리의 position을 설정해야 할 수도 있습니다. 다만 2000개나 되는 카테고리에서 이렇게 하는 것은 다소 복잡할 수 있습니다.
아니요, 아직 해결책을 찾지 못했습니다.
어떻게 하면 되나요? Rails 콘솔에 대해서는 전혀 알지 못합니다.
이 문제에 대해 조금 더 조사해 보았습니다. 2000개의 카테고리가 있다면 꽤 복잡한 작업이 될 것입니다. 한 카테고리의 위치를 변경하면 그 뒤에 있는 모든 카테고리의 위치에도 영향을 미치기 때문입니다. 콘솔을 통해 변경하도록 권고하는 것은 꺼려집니다.
기술적으로는 이것이 버그인지 확실하지 않습니다. Discourse는 2000개 이상의 카테고리를 생성할 수 있도록 허용하지만, UI는 그렇게 많은 카테고리를 처리하도록 설계되지 않았습니다. 과거에 카테고리를 순서대로 정렬할 때 문제가 없었나요?
순서대로 정렬된 걸 원하시나요? 한때 카테고리 및 하위 카테고리를 알파벳 순으로 정렬하는 스크립트를 가지고 있었습니다.
아마 누군가가 태그 사용을 권유했을 텐데, 이 정도 수량의 카테고리를 다룰 때 겪게 될 문제의 시작일 가능성이 큽니다.
아니요, 저는 이 문제를 처음 겪어 보고 이전에 경험한 적이 없습니다. 저는 일반 인터페이스에서 스크립트를 통해 이 수량의 카테고리를 생성했습니다. 콘솔을 통해 어떻게 해야 하나요?
저는 태그를 다른 목적으로 사용하고 있으며, 다른 요소와 혼합할 수 없습니다. 이제 하위 카테고리 하나를 위로 이동해야 합니다. 생성 전에 수동으로 정렬해 두었습니다. 콘솔을 사용하는 것이 유일한 방법인 것 같습니다. 어떻게 해야 할지 아이디어가 있으신가요?
다음과 같이 하면 됩니다.
cd /var/discourse
./launcher enter app
rails c
이렇게 하면 콘솔에 접근할 수 있습니다. 그런 다음 do stuff를 실행하면 됩니다.
이 명령들이 무엇인지 이해하지 못한다면, 직접 실행하는 것을 권장하지 않습니다.
아래는 2018년 1월 12일경에 작동했던 것으로 믿는 스크립트입니다. 반드시 작동한다고 보장할 수는 없지만, 작동하지 않을 이유는 없다고 봅니다. 백업을 꼭 취하고, 촛불을 켜두세요. ![]()
# 검색어와 일치하는 모든 카테고리 및 하위 카테고리를 알파벳 순으로 정렬
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 "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
더 많은 도움이 필요하고 예산이 있다면 Redirecting… 을 참조하거나 저에게 이메일을 보내주세요.
도움이 되길 바랍니다!