После reading this (@thomasfedb ответ), я, хотя это будет работать:Как сделать фильтр, а затем найти потомков потомков?
@categories = Category.joins(:category_users).where("category_users.user_id = ? AND category_users.interested_learning IS TRUE", current_user.id)
@search = Resource.joins(:categories).where(category_id: @categories.subtree_ids).search_filter(params[:search_filter]).paginate(:per_page => 20, :page => params[:page]).search(params[:q])
Но вместо этого, я получаю эту ошибку
undefined method `subtree_ids' for #<ActiveRecord::Relation:0x007fce832b1070>
Я также попытался @Rahul ответ от here
Без потомков потомков он работает следующим образом
@search = Resource.joins(:category_users).where("category_users.user_id = ? AND category_users.interested_learning IS TRUE", current_user.id).search_filter(params[:search_filter]).paginate(:per_page => 20, :page => params[:page]).search(params[:q])
Хотя я хочу выполнить поиск Ransack после поиска потомков, ошибка также появляется без Ransack. По этой причине я не включил его в заголовок. Без рыскать, это было бы так:
@categories = Category.joins(:category_users).where("category_users.user_id = ? AND category_users.interested_learning IS TRUE", current_user.id)
@resources = Resource.joins(:categories).where(category_id: @categories.subtree_ids)
Я был бы признателен за любые советы по этому вопросу может работать
Я только что обновил свой ответ, чтобы получить соответствующие идентификаторы. Исходное решение, которое я предоставил, вызовет запрос N + 1, который станет все более неэффективным, чем больше категорий, которые вы выберете. Я также прошел путь, чтобы извлечь эти идентификаторы. –