Canapin
(Coin-coin le Canapin)
12월 8, 2022, 2:17오후
21
xebiyen521:
그들이 초대받을 수 있을까요?
가장 빠르고 쉬운 방법입니다.
@JammyDodger님이 제안한 대로 /admin/users/list/active에서 사용자 목록을 CSV 파일로 다운로드하고, 이메일 주소만 남도록 정리한 후, 새 Discourse 설치 환경의 관리자 화면에서 일괄 초대를 실행하세요. 사용자는 다시 계정을 생성해야 합니다.
xebiyen521:
초대 없이 그대로 유지하고 싶었습니다.
일부 사용자를 제외하고 모든 데이터를 삭제하려면 쉬운 방법이 없으며, 시도를 하면 포럼이 손상될 수 있다고 생각합니다.
사용자의 대부분의 데이터(사용자 설정 등)를 내보내고 싶다면, 이것도 어려울 것이며 Ruby on Rails 스크립트를 작성해야 합니다. 또한 제가 예상하지 못한 문제가 발생할 수도 있습니다. 어떻게 해야 할지 확신이 없다면 첫 번째 해결책을 따르거나, 예산이 있다면 #marketplace에 게시글을 남기시길 권장합니다.
pfaffman
(Jay Pfaffman)
12월 8, 2022, 2:58오후
22
맞습니다. 하지만 위험을 감수하고 싶다면 다음을 시도해 볼 수 있습니다:
./launcher enter app
discourse backup
rails c
Topic.where("user_id > 1").destroy_all
Upload.where("user_id > 1").destroy_all
exit
exit
주제를 삭제하면 게시글도 함께 삭제될 것이라고 생각하지만, 다음 줄을 추가할 수도 있습니다:
Post.where("user_id > 0").destroy_all
> 1은 첫 번째 사용자가 생성한 주제들을 남겨둡니다. 이것들도 삭제하려면 > 0으로 변경하세요. 그러면 @system이 생성한 주제들만 남게 됩니다. 그것들을 삭제하면 매우 후회하게 될 것이라고 생각합니다.
이것은 모든 것이 파괴될 경우를 대비한 백업입니다.
이것은 거의 확실히 나쁜 생각이지만, 당신이 요청한 것입니다.
leonardo
(Leonardo Mosquera)
12월 8, 2022, 5:29오후
23
Jay Pfaffman:
이건 거의 확실히 나쁜 아이디어입니다.
그렇습니다! 이를 위해 PostDestroyer 클래스가 있으며, 이 클래스는 필요한 추가 정리 작업을 많이 수행합니다.
@xebiyen 님은 이 rake 태스크를 사용하여 모든 카테고리의 모든 주제를 삭제하되, 카테고리과 사용자는 그대로 유지할 수 있습니다:
$ ./bin/rake destroy:topics_all_categories
Canapin
(Coin-coin le Canapin)
12월 8, 2022, 10:42오후
24
훌륭네요, 이 rake 태스크는 몰랐습니다. 원치 않는 부수 효과로 “About” 토픽까지 삭제되나요?
leonardo
(Leonardo Mosquera)
12월 8, 2022, 10:50오후
25
아니요, 해당 메서드가 사용하는 방식은 기본적으로 그들을 그대로 두며, rake 태스크도 그 기본값을 변경하지 않습니다:
class DestroyTask
def initialize(io = STDOUT)
@io = io
end
def destroy_topics(category, parent_category = nil, delete_system_topics = false)
c = Category.find_by_slug(category, parent_category)
descriptive_slug = parent_category ? "#{parent_category}/#{category}" : category
return @io.puts "A category with the slug: #{descriptive_slug} could not be found" if c.nil?
if delete_system_topics
topics = Topic.where(category_id: c.id, pinned_at: nil)
else
topics = Topic.where(category_id: c.id, pinned_at: nil).where.not(user_id: -1)
end
@io.puts "There are #{topics.count} topics to delete in #{descriptive_slug} category"
topics.find_each do |topic|
@io.puts "Deleting #{topic.slug}..."
first_post = topic.ordered_posts.first
if first_post.nil?
return @io.puts "Topic.ordered_posts.first was nil"
Canapin
(Coin-coin le Canapin)
12월 8, 2022, 11:16오후
26
확인해 주셔서 감사합니다. 확실하게 알고 싶었습니다. Administrative Bulk Operations 에 나열된 다른 작업에 대한 권장 방법 중 하나 또는 둘이 지난번에 사용했을 때 원치 않는 부작용이 있었기 때문입니다.
카테고리 간 토픽을 이동하는 데 한 가지 방법을 사용했는데, 일반 토픽과 함께 ‘About’ 토픽까지 이동해 버렸습니다. rake 태스크 대신 rails 스크립트를 사용한 것일 수도 있습니다. 확실하지는 않습니다.
또한 "특정 태그가 있는 모든 토픽을 단일 카테고리로 이동 "이라는 rake 메서드를 사용했는데, 데이터베이스의 태그 관련 테이블 일부가 제대로 채워지지 않았습니다 .
수정: 아, 제 케이크 데이(Cake Day)네요. 케이크가 진짜였으면 좋았을 텐데 … 하지만 어쩌면 진짜일지도 모르죠?
pfaffman
(Jay Pfaffman)
12월 9, 2022, 12:54오전
27
감사합니다! 그 클래스를 잊어버렸고, rake 태스크에 대해서는 몰랐거나 (아니면 잊어버렸다는 사실을 잊어버렸거나!)
xebiyen
(xebiyen521)
12월 9, 2022, 1:00오후
28
이 명령어 전에 어떤 명령어를 사용해야 하나요?
xebiyen
(xebiyen521)
12월 9, 2022, 1:01오후
29
@pfaffman @Canapin 그렇다면 @leonardo의 명령이 최선의 해결책인가요?
Canapin
(Coin-coin le Canapin)
12월 9, 2022, 1:52오후
30
직접 시도해 볼 수 있지만, 먼저 백업을 수행하세요.
명령줄에서 discourse 폴더로 이동하세요.
./launcher enter app를 입력하여 컨테이너에 진입하세요.
그런 다음 rake destroy:topics_all_categories를 입력하세요.
동작을 확인해 보세요 (제 테스트 인스턴스는 매우 느립니다) :