diff options
author | Rémy Coutable <remy@rymai.me> | 2016-05-13 17:26:18 +0200 |
---|---|---|
committer | Alfredo Sumaran <alfredo@gitlab.com> | 2016-06-06 11:59:49 -0500 |
commit | 499bb9f305e78d0e3488c2eee6328ce76af39920 (patch) | |
tree | ffc4aa229ae08c995afabf893ed36167c950302e /app/models/label.rb | |
parent | d8263b285193d9163089683eb77825f1cd673b14 (diff) | |
download | gitlab-ce-499bb9f305e78d0e3488c2eee6328ce76af39920.tar.gz |
Improve Issuable.order_labels_priority
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/models/label.rb')
-rw-r--r-- | app/models/label.rb | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/app/models/label.rb b/app/models/label.rb index 4437ca393ed..7fd77880558 100644 --- a/app/models/label.rb +++ b/app/models/label.rb @@ -19,7 +19,6 @@ class Label < ActiveRecord::Base validates :color, color: true, allow_blank: false validates :project, presence: true, unless: Proc.new { |service| service.template? } - validates :priority, presence: false, default: false # Don't allow '?', '&', and ',' for label titles validates :title, @@ -32,21 +31,11 @@ class Label < ActiveRecord::Base default_scope { order(title: :asc) } scope :templates, -> { where(template: true) } - scope :prioritized, ->(value = true) { where(priority: value) } - - def self.high_priority(name, table_name, labels) - unfiltered = unscoped - .select("MIN(labels.priority)") - .joins("INNER JOIN label_links ON label_links.label_id = labels.id") - .where("label_links.target_type = '#{name}'") - .where("label_links.target_id = #{table_name}.id") - .where("labels.project_id = #{table_name}.project_id") - - if labels.empty? - unfiltered - else - unfiltered.where("labels.title NOT IN (?)", labels) - end + + def self.prioritized(bool = true) + query = bool ? where.not(priority: nil) : where(priority: nil) + + query.reorder(Gitlab::Database.nulls_last_order(:priority), :title) end alias_attribute :name, :title @@ -139,8 +128,6 @@ class Label < ActiveRecord::Base end def nillify_priority - unless self.priority.present? - self.priority = nil - end + self.priority = nil if priority.blank? end end |