每个人。我有一个想法使用Activerecord来实现一些奇怪的事情,例如下面的示例:
SystemInfo < ActiveRecord::Base
belongs_to :SystemInfo
end
这个想法是,系统A可以包含系统B作为其子级。因此,我将生成应用程序的框架为:
script/generate scaffold SystemInfo parent_id:integer name:string
然后,当我插入系统A时,我将使用系统A的ID作为系统B的parent_id(系统A的parent_id将等于'nil'。)当我使用如下命令时:
sysA = SystemInfo.find_by_id(1) # Get System A
我认为这有可能获得系统A,而它又是系统B的子级。类似于:
sysA.childrens # Get System B and other SystemInfo which has parent_id == 1 (System A's ID)
您能为我提出实现该想法的指南吗?我认为这是很普遍的想法,我们应该可以做到。 ;)
最佳答案
你有正确的主意。
class SystemInfo < ActiveRecord::Base
belongs_to :parent, :class_name => 'SystemInfo'
has_many :children, :class_name => 'SystemInfo', :foreign_key => 'parent_id'
end
s = SystemInfo.find(1)
s.children
# => [...]
s.parent
# => <SystemInfo>
关于ruby-on-rails - Rails的Activerecord表如何引用自身?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1207504/