こんにちは、
TopicQuery.add_custom_filter 関数を利用するプラグインを開発しています。
このプラグインは、ランディングページに表示されるトピックのデフォルトビューに対してのみ、期待通りにカスタムフィルタを適用しています。
これは topic_query.rb ファイル内の default_results メソッド内で、カスタムフィルタを適用するために以下の呼び出しがあるためです。
result = apply_ordering(result, options)
これは素晴らしい機能ですが、私の意図とは少し異なります。私が望んでいたのは、/review ページに表示されるすべてのトピックにこのフィルタを適用することです。その方法がわかりません。
このコード部分に詳しい方はいますか?
現在私がフィルタリングを行っている方法は、こちらで確認できます:
https://github.com/hms-networks/discourse-location-filters/blob/test/app/controllers/filter_controller.rb
また、私が言及している Discourse の rb ファイルは、こちらです:
このトピッククエリパスに進み始めた時点で何か間違えてしまったようです。reviewables はそもそもそのトピッククエリ関数を使っていないようなので、この方法でカスタムフィルターを適用できないみたいです。
また、apply_custom_filters のパラメータについてまだ少し混乱しています。results はトピックの Ruby ハッシュを指すのでしょうか?そして topic_query は単にクラスのインスタンスなのでしょうか?
今後の進め方として、これが正しい方法かどうかはわかりませんが、reviewables_controller#index 関数をオーバーライドして、現在のユーザーに応じてレビュー対象リストからトピックを削除する方法を探してみようと思います。
アドバイスや提案があれば嬉しいです 