0
後reading this(在@thomasfedb答案),我以爲這會工作:如何做一個過濾器,然後找到Ancestry後裔?
@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>
我也試着從here
@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也會出現錯誤。出於這個原因,我沒有把它列入標題。如果沒有洗劫,這將是這樣的:
@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)
我希望有這方面的建議可以工作
我剛剛更新了我的答案,以更好的方式獲得相關ID。我提供的原始解決方案將觸發N + 1查詢,這將越來越低效,您選擇的類別越多。我也走過了提取這些ID的方式。 –