您可以拥有任意数量的父母和孩子。您的 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_id
和person_id
属性。表Bug
会tree_id
和Leaf
表会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
为它自己的父级,因为它是根。