45de7d263d
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".
67 lines
1.6 KiB
Ruby
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
|