summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2015-05-02 23:11:21 -0400
committerRobert Speicher <rspeicher@gmail.com>2015-05-26 15:48:30 -0400
commitc0faf91ff23815404a95cf4510b43dcf5e331c4f (patch)
tree81769f125569dd6ea012920544ada1e8666ba4e5 /app/models/merge_request.rb
parentb06dc74d611192744d34acda944d7ed9e554342a (diff)
downloadgitlab-ce-c0faf91ff23815404a95cf4510b43dcf5e331c4f.tar.gz
Add `to_reference` for models that support references
Now there is a single source of information for which attribute a model uses to be referenced, and its special character.
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb21
1 files changed, 18 insertions, 3 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 64f3c39f131..bfbf498591a 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -25,10 +25,11 @@ require Rails.root.join("app/models/commit")
require Rails.root.join("lib/static_model")
class MergeRequest < ActiveRecord::Base
- include Issuable
- include Taskable
include InternalId
+ include Issuable
+ include Referable
include Sortable
+ include Taskable
belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project"
belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project"
@@ -135,6 +136,20 @@ class MergeRequest < ActiveRecord::Base
scope :closed, -> { with_states(:closed, :merged) }
scope :declined, -> { with_states(:closed) }
+ def self.reference_prefix
+ '!'
+ end
+
+ def to_reference(from_project = nil)
+ reference = "#{self.class.reference_prefix}#{iid}"
+
+ if cross_project_reference?(from_project)
+ reference = project.to_reference + reference
+ end
+
+ reference
+ end
+
def validate_branches
if target_project == source_project && target_branch == source_branch
errors.add :branch_conflict, "You can not use same project/branch for source and target"
@@ -291,7 +306,7 @@ class MergeRequest < ActiveRecord::Base
# Mentionable override.
def gfm_reference
- "merge request !#{iid}"
+ "merge request #{to_reference}"
end
def target_project_path