diff options
author | Robert Speicher <rspeicher@gmail.com> | 2015-05-02 23:11:21 -0400 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2015-05-26 15:48:30 -0400 |
commit | c0faf91ff23815404a95cf4510b43dcf5e331c4f (patch) | |
tree | 81769f125569dd6ea012920544ada1e8666ba4e5 /app/models/merge_request.rb | |
parent | b06dc74d611192744d34acda944d7ed9e554342a (diff) | |
download | gitlab-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.rb | 21 |
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 |