根据自定义字段检索主题?

实现方法如下:

  1. 在客户端:使用 api.addDiscoveryQueryParam 添加一个 topic 查询参数。

  2. 在服务器端:在 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