实现方法如下:
-
在客户端:使用
api.addDiscoveryQueryParam添加一个 topic 查询参数。 -
在服务器端:在
TopicQuery类中使用add_custom_filter根据该参数过滤 topic 查询(参见lib/topic_query)。
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