Sql 有没有办法用RubyonRails计算后代关系模型?
有一个项目模型,它具有并属于associate_Project:项目模型的别名,并且具有并属于许多文档Sql 有没有办法用RubyonRails计算后代关系模型?,sql,ruby-on-rails,Sql,Ruby On Rails,有一个项目模型,它具有并属于associate_Project:项目模型的别名,并且具有并属于许多文档 class Project < ActiveRecord::Base # Project to Proejct associations # parent project => associate projects = @project.associate_projects has_and_belongs_to_many :associate_projects,
class Project < ActiveRecord::Base
# Project to Proejct associations
# parent project => associate projects = @project.associate_projects
has_and_belongs_to_many :associate_projects,
:foreign_key => 'project_id',
:association_foreign_key => 'associate_project_id',
:join_table => 'associate_projects_projects',
:class_name => 'Project',
:after_add => :increment_counters,
:after_remove => :decrement_counters
# associate projects => parent projects = @project.projects
has_and_belongs_to_many :projects,
:foreign_key => 'associate_project_id',
:association_foreign_key => 'project_id',
:join_table => 'associate_projects_projects'
has_and_belongs_to_many :docs
end
class项目关联项目=@project.associate\u项目
是否有和属于多个项目:关联项目,
:foreign\u key=>project\u id',
:association\u foreign\u key=>“associate\u project\u id”,
:join_table=>“关联_项目”,
:class_name=>“项目”,
:在添加=>:递增\u计数器之后,
:删除后=>:减量\u计数器
#关联项目=>父项目=@project.projects
_和_属于_很多:项目,
:foreign\u key=>associate\u project\u id',
:关联\u外键=>“项目\u id”,
:join\u table=>“关联\u项目\u项目”
_和_属于_多个:文档
结束
项目模型可以有子项目,并且子项目的数量没有限制。
Project id:1 Project id:2 Document id:1 project_id:2 Project id:4 Document id:3 project_id:4 Project id:3 Document id:2 project_id:3 Project id:4 Document id:3 project_id:4 项目编号:1 项目编号:2 文件编号:1项目编号:2 项目编号:4 文件编号:3项目编号:4 项目编号:3 文件编号:2项目编号:3 项目编号:4 文件编号:3项目编号:4 项目2,3属于项目1,项目4属于项目2和项目3。
在本例中,我想将属于项目2、3和4的文档计算为项目1的文档。项目文件的数量必须为3,因为文件3是重复的 是否有方法计算无限嵌套子项目的所有文档计数?
我想这是不可能的,因为没有限制可以有多少后代 这是可以做到的,但由于它是递归的,可能会变得昂贵。还必须处理循环性。e、 g P1=>P2=P1。计数的另一个模型可能是一种方法。是的,递归方法可能会变得很重。最好使用一些gem,如
祖先
或可怕的嵌套集
来更好地处理层次结构持久性(只允许在一个SQL查询中选择整个子树)。之后,您所要做的就是选择与子树中的项目关联的不同文档。感谢您的回复。我将尝试祖先
宝石。它看起来很有用。我尝试了祖先
,但孩子不能有多个父母,就像样本中的项目4一样。。。