Ruby on rails 在Rails的情况下如何使用友好的\u id?

Ruby on rails 在Rails的情况下如何使用友好的\u id?,ruby-on-rails,friendly-id,Ruby On Rails,Friendly Id,我有两种型号:BigCategory和SmallCategory class BigCategory < ApplicationRecord extend FriendlyId friendly_id :name, use: :slugged has_many :small_categories, dependent: :destroy end class SmallCategory < ApplicationRecord extend FriendlyId

我有两种型号:BigCategory和SmallCategory

class BigCategory < ApplicationRecord
  extend FriendlyId
  friendly_id :name, use: :slugged

  has_many :small_categories, dependent: :destroy
end

class SmallCategory < ApplicationRecord
  extend FriendlyId
  friendly_id :name, use: :slugged

  belongs_to :big_category
end
friendly_id的用法是友好的。查找:


这里params[:id]是记录id。因此,上面的例子。有没有一种方法可以使用漂亮的url获取所有小类别?

更好的方法是使用单个url构建层次结构:

class Category < ApplicationRecord
  belongs_to :parent, class_name: "Category"
  has_many :sub_categories, foreign_key: "parent_id", class_name: "Category"
end

使用自联接可以构建任意深度的层次结构,还可以查询同一表中的类别,而不管其深度如何。
SmallCategory.friendly.find(params[:id])
class Category < ApplicationRecord
  belongs_to :parent, class_name: "Category"
  has_many :sub_categories, foreign_key: "parent_id", class_name: "Category"
end
@parent = Category.includes(:sub_categories)
                  .find(params[:category_id])
@category = @parent.sub_categories
                   .friendly.find(params[:id])