diff --git a/app/controllers/api/pm/issues_controller.rb b/app/controllers/api/pm/issues_controller.rb index cf55fa9eb..687fa986e 100644 --- a/app/controllers/api/pm/issues_controller.rb +++ b/app/controllers/api/pm/issues_controller.rb @@ -238,17 +238,17 @@ class Api::Pm::IssuesController < Api::Pm::BaseController end def link_issues - children_issues = Issue.joins(:parent_issue).where(issues: {id: @issue.id}) - linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: @issue.id)) - belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: @issue.id)) + children_issues = Issue.where(root_id: @issue.id) + linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: @issue.id).pluck(:be_linkable_id)) + belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: @issue.id).pluck(:linkable_id)) full_link_issues_ids = children_issues.pluck(:id) | linkable_issues.pluck(:id) | belinkable_issues.pluck(:id) compare_link_issues_ids = children_issues.pluck(:id) | linkable_issues.pluck(:id) | belinkable_issues.pluck(:id) i = compare_link_issues_ids.count while i > 0 do - children_issues = Issue.joins(:parent_issue).where(issues: {id: compare_link_issues_ids}) - linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: compare_link_issues_ids)) - belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: compare_link_issues_ids)) + children_issues = Issue.where(root_id: compare_link_issues_ids) + linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: compare_link_issues_ids).pluck(:be_linkable_id)) + belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: compare_link_issues_ids).pluck(:linkable_id)) compare_link_issues_ids = children_issues.pluck(:id) | linkable_issues.pluck(:id) | belinkable_issues.pluck(:id) full_link_issues_ids = full_link_issues_ids | compare_link_issues_ids