Получить темы на основе пользовательского поля?

ОБНОВЛЕНИЕ: Я думаю, что мне удалось (в основном) заставить это работать (!). Теперь это будет показывать «последние» темы, соответствующие значению пользовательского поля. (Метод #latest был ближайшим, который я смог найти и который имел смысл в файле config/routes.rb).

Важно, чтобы на страницу действительно загружались все темы, имеющие соответствующее значение пользовательского поля fun_level. Нужно ли мне сделать что-то ещё, чтобы это произошло?


Вот код для моих собственных заметок и на случай, если он будет полезен другим:

— Я создал пользовательское поле :fun_level. Затем:

plugin.rb

TopicQuery.add_custom_filter(:fun_level) do |topics, query|
  if query.options[:fun_level]
    topics.where("topics.id in (
      SELECT topic_id FROM topic_custom_fields
      WHERE (name = 'fun_level')
      AND value = '#{query.options[:fun_level]}'
    )")
  else
    topics
  end
end

/connectors/my-plugin-outlet/fun-level.js.es6 (файл JavaScript, который активируется при переходе на соответствующую страницу. Так что этот JavaScript может находиться в инициализаторе или в коннекторе, связанном с выходным портом плагина. Мне нравится использовать код, идущий в комплекте с коннектором, поэтому я буду использовать здесь компонент setup):

const ajax = require('discourse/lib/ajax')

export default {
    setupComponent(args, component) {
      let parsedResultArray = []
      var endPoint = '/latest?fun_level=' + funLevel  //funLevel = переменная со значением из параметров
      ajax(endPoint).then(function (result) {
            console.log('результат списка тем для тем, соответствующих этому уровню веселья = ')
            console.log(result.topic_list.topics)
            //парсим результаты и загружаем их в parsedResultArray
            component.set('showTopics', parsedResultArray        
      })
   }
}

Теперь темы будут загружаться в {{topic-list topics=showTopics}}, который я использую в соответствующем компоненте, размещённом в шаблоне через my-plugin-outlet.

Это большой шаг вперёд. Огромное спасибо, @angus.