我有一个模型,它代表一个由组件组成的组件,组件(就其本身而言)也可能是组件。它看起来有点像这样:
class Component < ActiveRecord::Base
belongs_to :assembly, :class_name => "Component", :foreign_key => :assembly_id
has_many :pieces, :class_name => "Component", :foreign_key => :assembly_id
end
我想确定,当我向组件添加组件时,添加的不是组件本身,也不是链上的另一个组件。实际上,一个程序集不能包含自己,无论您向下多少层。
我的想法是在保存组件时遍历向上的树以查找组件本身作为父级、祖父级等。我试图避免循环引用。
有没有一种“简单的 Rails-ish”方式来做到这一点?还有其他建议吗?