사용자-태그 관계 플러그인 만들기

이 작업은 간단한 플러그인으로 수행할 수 있습니다.

수행해야 할 작업

플러그인은 다음을 수행해야 합니다:

  1. known_tags라는 사용자 사용자 정의 필드를 추가합니다. 이는 문자열 목록입니다.

  2. 사용자가 known_tags를 편집할 수 있는 사용자 프로필 인터페이스를 추가합니다. 이를 위해 완전히 새로운 프로필 탭을 추가할 필요는 없다고 생각하지만, 원한다면 추가할 수도 있습니다. 사용자가 직접 편집하는 것을 원하지 않는다면, 관리자만 편집할 수 있도록 설정하고 CSV 파일에 기반하여 사용자 프로필에 직접 들어가서 업데이트하면 됩니다.

  3. PostCreator의 before_create_post 또는 post_created 이벤트를 사용하여 토픽의 태그에 기반하여 원하는 내용을 게시물에 추가하는 이벤트 후크를 추가합니다.

수행 방법

1번과 2번 부분은 아래에 링크된 토픽의 다른 모델에 대한 예시 플러그인과 매우 유사합니다. 유추하여 스스로 해결해 볼 수 있는지 확인해 보세요. 정말 막막하다면 그 부분에 대한 힌트를 요청해 주세요.

3번 부분도 플러그인의 plugin.rb 파일에 들어가게 됩니다. 다음과 같은 형태가 될 것입니다.

on(:post_created) |post, opts, user|
  if post.is_first_post? && post.topic.tags.present?
     user_ids = UserCustomField.where(name: 'known_tags', value: post.topic.tags).pluck(:user_id)
     usernames = User.where(id: user_ids).pluck(:username)
     new_raw = post.raw + "something something #{usernames}"
     PostRevisor.new(post).revise!(
      user,
      {
        raw: new_raw,
        edit_reason: "some reason"
      },
      skip_validations: true,
      bypass_bump: true
    )
  end 
end

스스로 한번 도전해 보세요. 정말 막막해지면 도와드리겠습니다. 스스로 해결하려는 강한 의지가 보이면 더 적극적으로 도와드리고 싶어 하거든요 :slight_smile: