读完这篇文章(@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 的回答
没有祖先的后代,它是这样工作的
@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 也会出现错误。出于这个原因,我没有将它包含在标题中。如果没有 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)
我会很感激任何关于这方面的建议可以工作