2

所以我知道对于类别的树结构,您可以使用以下内容:

class Category < ActiveRecord::Base
  has_many :children, :class_name => "Category"
  belongs_to :parent, :class_name => "Category" 
end

分类数据库

  • id(整数)
  • parent_id(整数)
  • 名称(字符串)

但是,您将如何使一个类别具有多个父级和多个子级?我想我需要添加一个 child_id(整数),但是模型是什么样的?

4

1 回答 1

0

您可以拥有任意数量的父母和孩子。您的 child_id 不属于该表,而仅属于 parent_id。

让我给你一个不同的例子。

一棵树有_many 叶子和has_many 虫子。一棵树属于森林和属于人。

所以模型看起来像这样:

class Tree < ActiveRecord::Base
  has_many :leaves
  has_many :bugs
  belongs_to :forest
  belongs_to :person
end

然后该Tree表将具有forest_idperson_id属性。表Bugtree_idLeaf表会tree_id分别。如果您有更多问题,请告诉我。

编辑:

为了对作为其自己的父模型的模型进行循环引用,您应该能够简单地执行此操作。

class Category < ActiveRecord::Base
  has_many :categories
end

这里会发生的是Category表应该得到一个category_id字段。只要category_id在表数据中正确设置了引用,您就可以在模型中拥有任意数量的父母和孩子。所以说你有:

name | id | category_id
   a | 1  | 1
   b | 2  | 1
   c | 3  | 1

使用 ActiveRecord 关联,您应该能够浏览此模型。我认为诀窍是设置Category: a为它自己的父级,因为它是根。

于 2013-09-21T01:00:27.503 回答