如何将表链接添加到行

时间:2016-03-15 23:02:33

标签: mysql ruby-on-rails database-design

我正在使用MySQL开发Ruby on Rails应用程序,我的数据库中有一个Categories表。 我想在其中一个类别中添加子类别。 我想为子类别创建一个新表,或者只是将它们添加到相同的Categories表中。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

由于sub_category只是一个带有父关联的category,您只需将categoriessub_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_treeancestry了解更多信息,