如何在 Rails 上获取 Ruby 中对象的所有后代

How to get all the descendants of an object in Ruby on Rails

我有以下相关模型:

GrandParent 
  has_many :kids
  has_many :grand_children, through: :kids
Kid 
  belongs_to :grand_parent
  has_many :grand_kids
GrandKid
  belongs_to :kid

我只想在一个对象上调用 .descendants,并获取属于它 'lineage' 的所有对象。

我认为使用祖先 gem 会给我想要的 .descendants 方法,但它只会在单个 class 上创建一个额外的索引,允许您在所述 class.(非常适合评论和回复之类的事情,但对我的问题没有用)我的代码并不是理解问题所必需的,但对于那些感兴趣的人来说:https://gist.github.com/bjlinville1/8425bfe88bc7060209e8

我认为您对祖先的解释不正确 gem。 看起来您希望 Region 显示为 Country 的子项。是吗?

Ancestry 对于树状结构很有用(想想文件夹 -> 子文件夹 -> 子文件夹 -> 等等)

在您的国家模型中应用 has_ancestry 将允许您在国家中创建国家。但我不相信那是你要找的。

无论如何,您可以通过在控制器中 creating/updating 国家/地区设置 "parent_id" 属性来设置这些关系。只需将其设置为母国的 ID 即可。 如果您想要区域的树结构,区域也一样。