我正在使用MySQL开发Ruby on Rails应用程序,我的数据库中有一个Categories表。 我想在其中一个类别中添加子类别。 我想为子类别创建一个新表,或者只是将它们添加到相同的Categories表中。有人可以帮忙吗?
答案 0 :(得分:0)
由于sub_category
只是一个带有父关联的category
,您只需将categories
和sub_categories
存储在一个表中,然后连接该关联。这种类型的关联称为自联接关联。
尝试以下方法:
class Category < ActiveRecord::Base
has_many :sub_categories, class_name: 'Category', foreign_key: :parent_id
belongs_to :parent, class_name: 'Category'
end
有关详细信息,请参阅Self Joins Association。
您需要设置以下迁移:
class AddParentIdToCategories < ActiveRecord::Migration
def change
add_column(:categories, :parent_id, :integer)
end
end
然后运行迁移:
bundle exec rake db:migrate
如果您希望您的树结构更复杂,例如,sub_categories具有sub_sub_categories等等,那么您可以查看几个抽象此功能的宝石。
请参阅acts_as_tree和ancestry了解更多信息,