gitlab-org--gitlab-foss/app/models/issue.rb
Drew Blessing 45de7d263d Issue-4769 - Unable to update case of label
Labels are saved in the database with the case they were originally created with.
Before this change if a user created a label with the same text but different case
the label would use the original case and no new label would be created in the
database. With this change, labels are now case-sensitive.

Steps to test:

1. Before this change, create a new issue with a new label "FIxMe"
2. Edit the issue and change the label to "FixMe"
3. Note that the label reverted to "FIxMe"
4. Apply this change
5. Edit the issue again and change the label to "FixMe"
Note that the new case was preserved. If you also look in the database in the "tags" table you will see that both labels are present - "FIxMe" and "FixMe".
2013-10-02 08:18:28 -05:00

67 lines
1.6 KiB
Ruby

# == Schema Information
#
# Table name: issues
#
# id :integer not null, primary key
# title :string(255)
# assignee_id :integer
# author_id :integer
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# position :integer default(0)
# branch_name :string(255)
# description :text
# milestone_id :integer
# state :string(255)
# iid :integer
#
class Issue < ActiveRecord::Base
include Issuable
include InternalId
ActsAsTaggableOn.strict_case_match = true
belongs_to :project
validates :project, presence: true
scope :of_group, ->(group) { where(project_id: group.project_ids) }
scope :of_user_team, ->(team) { where(project_id: team.project_ids, assignee_id: team.member_ids) }
scope :opened, -> { with_state(:opened) }
scope :closed, -> { with_state(:closed) }
attr_accessible :title, :assignee_id, :position, :description,
:milestone_id, :label_list, :author_id_of_changes,
:state_event
acts_as_taggable_on :labels
scope :cared, ->(user) { where(assignee_id: user) }
scope :open_for, ->(user) { opened.assigned_to(user) }
state_machine :state, initial: :opened do
event :close do
transition [:reopened, :opened] => :closed
end
event :reopen do
transition closed: :reopened
end
state :opened
state :reopened
state :closed
end
# Both open and reopened issues should be listed as opened
scope :opened, -> { with_state(:opened, :reopened) }
# Mentionable overrides.
def gfm_reference
"issue ##{iid}"
end
end