こんにちは、
投稿された場所と、トピックを表示しているユーザーが属するグループに基づいて、すべてのトピックをフィルタリングするプラグインを作成中です。このユースケースは、各国のサポートチームがそれぞれの地域から寄せられる質問に対応するためのものです。
Discourse プラグイン作成の初心者で、まだ学習中の段階です。トピックの所在地については、以下の「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
end
このアプローチは問題ないでしょうか?
また、SQL クエリの具体的な内容や、上記のコメント部分の情報を取得する方法について、ご提案があれば教えてください。