これを行う方法は以下の通りです
-
クライアント側で:
api.addDiscoveryQueryParamを使用してトピックのクエリパラメータを追加します -
サーバー側で:
TopicQueryクラス(lib/topic_queryを参照)のadd_custom_filterを使用して、そのパラメータに基づいてトピッククエリをフィルタリングします
add_custom_filter のコールバックは、以下のような見た目になります
::TopicQuery.add_custom_filter(:field_name) do |topics, query|
if query.options[:field_name]
topics.where("topics.id in (
SELECT topic_id FROM topic_custom_fields
WHERE (name = 'field_name')
AND value = '#{query.options[:field_name]}'
)")
else
topics
end
end