diff options
-rw-r--r-- | app/models/project.rb | 11 | ||||
-rw-r--r-- | app/services/projects/update_service.rb | 3 |
2 files changed, 6 insertions, 8 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index f287e59b6df..2562c441abe 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -97,9 +97,12 @@ class Project < ActiveRecord::Base has_one :gitlab_issue_tracker_service, dependent: :destroy has_one :external_wiki_service, dependent: :destroy - has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" + has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" + has_one :forked_from_project, through: :forked_project_link + + has_many :forked_project_links, foreign_key: "forked_from_project_id" + has_many :forks, through: :forked_project_links, source: :forked_to_project - has_one :forked_from_project, through: :forked_project_link # Merge Requests for target project should be removed with it has_many :merge_requests, dependent: :destroy, foreign_key: 'target_project_id' # Merge requests from source project should be kept when source project was removed @@ -734,10 +737,6 @@ class Project < ActiveRecord::Base forks.count end - def forks - ForkedProjectLink.where(forked_from_project_id: self.id) - end - def find_label(name) labels.find_by(name: name) end diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb index 0d2665f298d..67e3429c0bd 100644 --- a/app/services/projects/update_service.rb +++ b/app/services/projects/update_service.rb @@ -44,8 +44,7 @@ module Projects end def update_forks_visibility_level(new_level) - project.forks.each do |forked_link| - forked_project = forked_link.forked_to_project + project.forks.each do |forked_project| fork_level = forked_project.visibility_level if fork_level > new_level.to_i |