diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-09-26 23:23:58 -0300 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-10-19 14:58:24 -0200 |
commit | 20b6974a5c7866b24969937caadd5cf483c8f8a4 (patch) | |
tree | 095499f4ef6e6c8884434d56c4fc28b3791fa4fe | |
parent | b654229dcd3e4460ad7305ee7714395f044a72aa (diff) | |
download | gitlab-ce-20b6974a5c7866b24969937caadd5cf483c8f8a4.tar.gz |
Fix Issuable#add_labels_by_names to validate if label exists on group
-rw-r--r-- | app/models/concerns/issuable.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index c4b42ad82c7..1647d693a9d 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -235,9 +235,19 @@ module Issuable end def add_labels_by_names(label_names) + label_ids = [] + label_ids << project.group.labels.select(:id) if project.group.present? + label_ids << project.labels.select(:id) + + union = Gitlab::SQL::Union.new(label_ids) + + available_labels = Label.where("labels.id IN (#{union.to_sql})") + label_names.each do |label_name| - label = project.labels.create_with(color: Label::DEFAULT_COLOR). - find_or_create_by(title: label_name.strip) + title = label_name.strip + label = available_labels.find_by(title: title) + label = project.labels.build(title: title, color: Label::DEFAULT_COLOR) if label.nil? + self.labels << label end end |