Associate_project: Project モデルのエイリアスを持ち、それに属する Project モデルがあり、多くのドキュメントを持ち、それに属しています。
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
プロジェクト モデルは子孫プロジェクトを持つことができ、子孫の数に制限はありません。
プロジェクト ID:1 プロジェクト ID:2 ドキュメント ID:1 プロジェクト ID:2 プロジェクトID:4 ドキュメント id:3 project_id:4 プロジェクトID:3 ドキュメント ID:2 project_id:3 プロジェクトID:4 ドキュメント id:3 project_id:4
プロジェクト 2,3 はプロジェクト 1 に属し、プロジェクト 4 はプロジェクト 2 および 3 に属しています。
この場合、プロジェクト 2、3、および 4 に属するドキュメントをプロジェクト 1 のドキュメントとしてカウントします。ドキュメント 3 は重複しているため、プロジェクトのドキュメントの数は 3 でなければなりません。
無制限にネストされた子プロジェクトのドキュメントの数をすべてカウントする方法はありますか?
子孫の数に制限がないので無理だと思いますが…