현재 사용자 그룹과 토픽 위치에 기반한 토픽 필터 만들기

안녕하세요,

토픽이 어디에서 게시되었는지와 해당 토픽을 보는 사용자의 그룹을 기준으로 모든 토픽을 필터링하는 플러그인을 개발 중입니다. 이 플러그인의 사용 사례는 각 국가의 지원 팀이 자국에서 발생한 질문을 처리하도록 하는 것입니다.

저는 아직 이 작업을 배우고 있는 디스코urs 플러그인 개발 초보자입니다. 토픽 위치는 여기의 locations 플러그인(Locations Plugin 🌍)을 통해 처리할 예정입니다.

필터링된 뷰를 가져야 하는 사용자를 NA_queue 또는 EU_queue와 같은 이름의 그룹에 추가할 것입니다.

플러그인은 사용자가 로그인되어 있는지, 그리고 기본 그룹이 설정되어 있는지 확인합니다. 설정되어 있다면, 현재 사용자가 속한 큐에 해당하는 모든 토픽으로 필터링합니다.

아래와 유사한 코드로 구현할 수 있을 것 같습니다:
after_initialize do
require_dependency ‘topic_query’

  # 로그인되어 있고 기본 그룹이 설정된 경우

  # 사용자의 기본 그룹을 가져와야 함
  # 토픽 위치를 가져와야 함

  TopicQuery.add_custom_filter(:location) do |results, topic_query|
    filter = "여기에 SQL 쿼리 입력"
    results = results.joins("{filter}")

    results
  end

이것이 제 문제를 해결하는 좋은 접근 방식인가요?
또한, SQL 쿼리가 무엇이어야 하는지 또는 주석으로 표시된 두 가지 정보(사용자의 기본 그룹과 토픽 위치)를 어떻게 가져올 수 있는지 제안이 있는 분이 계신가요?

질문 수정 권한이 없어서 그냥 여기에 올립니다. 업데이트:

브라우저 측 JS에서 현재 사용자를 서버 측에서 실행 중인 내 코드로 전달하는 방법에 대해 막혀 있습니다. 이 내용을 설명하는 가이드가 어딘가에는 있겠지만 아직 찾지 못했습니다 :frowning:

아래 코드는 게시물 위치 필터로 잘 작동합니다.
after_initialize do

# 클라이언트 측에서 somehow 전달된 현재 사용자를 가져옵니다
def self.filter_on_user

  require_dependency 'topic_query'

  # 현재 사용자가 기본 그룹이 있다면 국가 코드를 설정합니다
  # 일단 미국의 국가 코드는 US라고 가정합니다
 countrycode = "us" 

  # 해당 사용자의 사이트 전체 토픽 쿼리에 대해 해당 국가 코드로 필터링합니다.
  TopicQuery.add_custom_filter(:location) do |results, topic_query|

    results = results.joins("JOIN topic_custom_fields tc ON
                             topics.id = tc.topic_id AND
                             tc.name = 'location' AND
                             tc.value LIKE '%countrycode\":\"#{countrycode}%'
                             ")
 results
  end
end

filter_on_user

end