dev_forge
Jasder 5 years ago
commit 3ae58b3989

@ -328,7 +328,7 @@ class ApplicationController < ActionController::Base
def current_user def current_user
# User.current # User.current
User.find_by_id 50207 User.find_by_id 1
end end
## 默认输出json ## 默认输出json

@ -19,18 +19,18 @@ class IssueTagsController < ApplicationController
def create def create
title = params[:title].to_s.strip title = params[:name].to_s.strip
desc = params[:description] desc = params[:description]
color = params[:color] || "#ccc" color = params[:color] || "#ccc"
tag_params = { tag_params = {
title: title, name: title,
description: desc, description: desc,
color: color color: color
} }
if title.present? if title.present?
if IssueTag.exists?(title: title, project_id: @project.id) if IssueTag.exists?(name: title, project_id: @project.id)
normal_status(-1, "标签已存在") normal_status(-1, "标签已存在")
else else
issue_tag = IssueTag.new(tag_params.merge(project_id: @project.id, user_id: current_user.id)) issue_tag = IssueTag.new(tag_params.merge(project_id: @project.id, user_id: current_user.id))
@ -52,17 +52,17 @@ class IssueTagsController < ApplicationController
end end
def update def update
title = params[:title] title = params[:name]
desc = params[:description] desc = params[:description]
color = params[:color] || "#ccc" color = params[:color] || "#ccc"
tag_params = { tag_params = {
title: title, name: title,
description: desc, description: desc,
color: color color: color
} }
if title.present? if title.present?
if IssueTag.exists?(title: title, project_id: @project.id) && (@issue_tag.title != title) if IssueTag.exists?(name: title, project_id: @project.id) && (@issue_tag.name != title)
normal_status(-1, "标签已存在") normal_status(-1, "标签已存在")
else else
if @issue_tag.update_attributes(tag_params) if @issue_tag.update_attributes(tag_params)

@ -6,7 +6,7 @@ class IssuesController < ApplicationController
before_action :set_issue, only: [:edit, :update, :destroy, :show, :copy, :index_chosen] before_action :set_issue, only: [:edit, :update, :destroy, :show, :copy, :index_chosen]
def index def index
issues = @project.issues.includes(:user,:tracker, :issue_tag, :version, :issue_status, :journals) issues = @project.issues.includes(:user,:tracker, :priority, :version, :issue_status, :journals)
issues = issues.where(is_private: false) unless current_user.present? && (current_user.admin? || @project.member?(current_user)) issues = issues.where(is_private: false) unless current_user.present? && (current_user.admin? || @project.member?(current_user))
@all_issues_size = issues.size @all_issues_size = issues.size
@ -41,6 +41,8 @@ class IssuesController < ApplicationController
issues = issues.where(priority_id: params[:priority_id]) if params[:priority_id].present? issues = issues.where(priority_id: params[:priority_id]) if params[:priority_id].present?
issues = issues.where(fixed_version_id: params[:fixed_version_id]) if params[:fixed_version_id].present? issues = issues.where(fixed_version_id: params[:fixed_version_id]) if params[:fixed_version_id].present?
issues = issues.where(done_ratio: params[:done_ratio].to_i) if params[:done_ratio].present? issues = issues.where(done_ratio: params[:done_ratio].to_i) if params[:done_ratio].present?
issues = issues.where(issue_type: params[:issue_type]) if params[:issue_type].present?
issues = issues.joins(:issue_tags).where(issue_tags: {id: params[:issue_tag_id].to_i}) if params[:issue_tag_id].present?
order_type = params[:order_type] || "desc" #或者"asc" order_type = params[:order_type] || "desc" #或者"asc"
order_name = params[:order_name] || "created_on" #或者"updated_on" order_name = params[:order_name] || "created_on" #或者"updated_on"
@ -72,6 +74,8 @@ class IssuesController < ApplicationController
@all_issues_size = issues.size @all_issues_size = issues.size
@open_issues_size = issues.where.not(status_id: 5).size @open_issues_size = issues.where.not(status_id: 5).size
@close_issues_size = issues.where(status_id: 5).size @close_issues_size = issues.where(status_id: 5).size
@normal_issues_size = issues.where(issue_type: "1").size
@pay_issues_size = issues.where(issue_type: "2").size
status_type = params[:status_type].to_s status_type = params[:status_type].to_s
@ -79,6 +83,10 @@ class IssuesController < ApplicationController
issues = issues.where.not(status_id: 5) issues = issues.where.not(status_id: 5)
elsif status_type.to_s == "2" #表示关闭中的 elsif status_type.to_s == "2" #表示关闭中的
issues = issues.where(status_id: 5) issues = issues.where(status_id: 5)
elsif status_type.to_s == "3" #普通
issues = issues.where(issue_type: "1")
elsif status_type.to_s == "4" #悬赏
issues = issues.where(issue_type: "2")
end end
@commit_issues = [] @commit_issues = []
@ -121,6 +129,10 @@ class IssuesController < ApplicationController
def create def create
if params[:subject].blank? if params[:subject].blank?
normal_status(-1, "标题不能为空") normal_status(-1, "标题不能为空")
elsif params[:subject].to_s.size > 255
normal_status(-1, "标题不能超过255个字符")
elsif (params[:issue_type].to_s == "2") && params[:token].to_i == 0
normal_status(-1, "悬赏的奖金必须大于0")
else else
issue_params = { issue_params = {
subject: params[:subject], subject: params[:subject],
@ -134,7 +146,11 @@ class IssuesController < ApplicationController
start_date: params[:start_date].to_s.to_date, start_date: params[:start_date].to_s.to_date,
due_date: params[:due_date].to_s.to_date, due_date: params[:due_date].to_s.to_date,
estimated_hours: params[:estimated_hours], estimated_hours: params[:estimated_hours],
done_ratio: params[:done_ratio] done_ratio: params[:done_ratio],
issue_type: params[:issue_type],
token: params[:token],
issue_tags_value: params[:issue_tag_ids].present? ? params[:issue_tag_ids].join(",") : "",
closed_on: (params[:status_id].to_i == 5) ? Time.now : nil,
} }
@issue = Issue.new(issue_params.merge(author_id: current_user.id, project_id: @project.id)) @issue = Issue.new(issue_params.merge(author_id: current_user.id, project_id: @project.id))
if @issue.save! if @issue.save!
@ -147,6 +163,11 @@ class IssuesController < ApplicationController
end end
end end
end end
if params[:issue_tag_ids].present?
params[:issue_tag_ids].each do |tag|
IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag)
end
end
if params[:assigned_to_id].present? if params[:assigned_to_id].present?
Tiding.create!(user_id: params[:assigned_to_id], trigger_user_id: current_user.id, Tiding.create!(user_id: params[:assigned_to_id], trigger_user_id: current_user.id,
container_id: @issue.id, container_type: 'Issue', container_id: @issue.id, container_type: 'Issue',
@ -180,7 +201,10 @@ class IssuesController < ApplicationController
due_date: params[:due_date].to_s.to_date, due_date: params[:due_date].to_s.to_date,
estimated_hours: params[:estimated_hours], estimated_hours: params[:estimated_hours],
done_ratio: params[:done_ratio], done_ratio: params[:done_ratio],
closed_on: (params[:status_id].to_i == 5) ? Time.now : nil closed_on: (params[:status_id].to_i == 5) ? Time.now : nil,
issue_type: params[:issue_type],
issue_tags_value: params[:issue_tag_ids].present? ? params[:issue_tag_ids].join(",").to_s : "",
token: params[:token]
} }
if @issue.update_attributes(issue_params) if @issue.update_attributes(issue_params)
@ -207,6 +231,19 @@ class IssuesController < ApplicationController
end end
end end
end end
if params[:issue_tag_ids].present?
issue_current_tags = @issue&.issue_tags&.select(:id)&.pluck(:id)
new_tag_ids = params[:issue_tag_ids] - issue_current_tags
old_tag_ids = issue_current_tags - params[:issue_tag_ids]
if old_tag_ids.size > 0
@issue.issue_tags_relates.where(issue_tag_id: old_tag_ids).delete_all
end
if new_tag_ids.size > 0
new_tag_ids.each do |tag|
IssueTagsRelate.create(issue_id: @issue.id, issue_tag_id: tag)
end
end
end
@issue.create_journal_detail(change_files, issue_files, issue_file_ids) @issue.create_journal_detail(change_files, issue_files, issue_file_ids)
normal_status(0, "更新成功") normal_status(0, "更新成功")
@ -267,9 +304,11 @@ class IssuesController < ApplicationController
end end
def issue_left_chosen(project,issue_id) def issue_left_chosen(project,issue_id)
issue_info = Array.new(9) issue_info = Array.new(11)
use_tags = []
if issue_id.present? if issue_id.present?
select_arrays = [:assigned_to_id, :tracker_id, :status_id, :priority_id, :fixed_version_id, :start_date, :due_date, :estimated_hours, :done_ratio] use_tags = Issue.find(issue_id).issue_tags.select(:id).pluck(:id)
select_arrays = [:assigned_to_id, :tracker_id, :status_id, :priority_id, :fixed_version_id, :start_date, :due_date, :estimated_hours, :done_ratio, :issue_type, :token]
issue_info = Issue.select(select_arrays).where(id: issue_id).pluck(select_arrays) issue_info = Issue.select(select_arrays).where(id: issue_id).pluck(select_arrays)
issue_info = issue_info[0] issue_info = issue_info[0]
end end
@ -307,13 +346,12 @@ class IssuesController < ApplicationController
end end
end end
issue_priority = IssuePriority&.pluck(:id,:name, :position)
issue_priority = project.issue_tags&.pluck(:id,:title, :color) new_priority_info = [] #优先度
new_priority_info = [] #issue标签优先程度
if issue_priority.size > 0 if issue_priority.size > 0
issue_priority.each do |t| issue_priority.each do |t|
is_chosen = (t[0] == issue_info[3]) ? "1" : "0" is_chosen = (t[0] == issue_info[3]) ? "1" : "0"
new_issue = {id: t[0], name: t[1], color: t[2], is_chosen: is_chosen} new_issue = {id: t[0], name: t[1], position: t[2], is_chosen: is_chosen}
new_priority_info.push(new_issue) new_priority_info.push(new_issue)
end end
end end
@ -339,27 +377,48 @@ class IssuesController < ApplicationController
end end
end end
issue_tags = project.issue_tags&.pluck(:id,:name, :color)
new_tags_info = [] #issue标签
if issue_tags.size > 0
issue_tags.each do |t|
is_chosen = (use_tags.size > 0 && use_tags.include?(t[0])) ? "1" : "0"
new_issue = {id: t[0], name: t[1], color: t[2], is_chosen: is_chosen}
new_tags_info.push(new_issue)
end
end
issue_types = %w(普通 悬赏)
new_types_info = [] #issue标签
issue_types.each_with_index do |i, index|
is_chosen = (issue_info[9] == "#{index+1}") ? "1" : "0"
is_token = (index.to_s == "1") ? issue_info[10] : nil
new_type_info = {id: index+1, name: i, token: is_token, is_chosen: is_chosen}
new_types_info.push(new_type_info)
end
{ {
"assign_user": project_members_info, "assign_user": project_members_info,
"tracker": new_tracker_info, "tracker": new_tracker_info,
"issue_status": new_status_info, "issue_status": new_status_info,
"issue_tag": new_priority_info, "priority": new_priority_info,
"issue_version": new_version_info, "issue_version": new_version_info,
"start_date": issue_info[5], "start_date": issue_info[5],
"due_date": issue_info[6], "due_date": issue_info[6],
"estimated_hours": issue_info[7], "estimated_hours": issue_info[7],
"done_ratio": new_done_info "done_ratio": new_done_info,
"issue_tag": new_tags_info,
"issue_type": new_types_info
} }
end end
def export_issues(issues) def export_issues(issues)
@table_columns = %w(ID 类型 标题 描述 状态 指派给 优先级 发布人 创建时间 里程碑 开始时间 截止时间 完成度) @table_columns = %w(ID 类型 标题 描述 状态 指派给 优先级 标签 发布人 创建时间 里程碑 开始时间 截止时间 完成度 分类 金额)
@export_issues = [] @export_issues = []
issues.each do |i| issues.each do |i|
issue_array = [i.id, i.tracker.try(:name), i.subject, i.description, i.issue_status.try(:name),i.get_assign_user.try(:show_real_name), issue_array = [i.id, i.tracker.try(:name), i.subject, i.description, i.issue_status.try(:name),i.get_assign_user.try(:show_real_name),
i.issue_tag.try(:title), i.user.try(:show_real_name), format_time(i.created_on), i.version.try(:title), i.start_date.to_s, i.due_date.to_s, i.done_ratio.to_s + "%" ] i.priority.try(:name), i.get_issue_tags_name, i.user.try(:show_real_name), format_time(i.created_on), i.version.try(:title),
i.start_date.to_s, i.due_date.to_s, i.done_ratio.to_s + "%", i.issue_type == "2" ? "悬赏" : "普通", i.token.to_s ]
@export_issues.push(issue_array) @export_issues.push(issue_array)

@ -28,7 +28,8 @@ module IssuesHelper
journal_info = { journal_info = {
id: j.id, id: j.id,
content: j.try(:notes), content: j.try(:notes),
created_at: time_from_now(j.created_on), format_time: time_from_now(j.created_on),
created_at: format_time(j.created_on),
user_name: j.user.try(:show_real_name), user_name: j.user.try(:show_real_name),
user_login: j.user.try(:login), user_login: j.user.try(:login),
user_pictrue: url_to_avatar(j.user) user_pictrue: url_to_avatar(j.user)
@ -39,4 +40,8 @@ module IssuesHelper
children_journal_content children_journal_content
end end
# def get_issue_tags(issue_tag_ids)
# IssueTag.where(id: issue_tag_ids).select(:id,:name,:color).as_json
# end
end end

@ -1,7 +1,9 @@
class Issue < ApplicationRecord class Issue < ApplicationRecord
#issue_type 1为普通2为悬赏
belongs_to :project belongs_to :project
belongs_to :tracker belongs_to :tracker
belongs_to :issue_tag, foreign_key: :priority_id,optional: true # belongs_to :issue_tag,optional: true
belongs_to :priority, :class_name => 'IssuePriority', foreign_key: :priority_id,optional: true #
belongs_to :version, foreign_key: :fixed_version_id,optional: true belongs_to :version, foreign_key: :fixed_version_id,optional: true
belongs_to :user,optional: true, foreign_key: :author_id belongs_to :user,optional: true, foreign_key: :author_id
belongs_to :issue_status, foreign_key: :status_id,optional: true belongs_to :issue_status, foreign_key: :status_id,optional: true
@ -10,11 +12,11 @@ class Issue < ApplicationRecord
has_many :memos has_many :memos
has_many :journals, :as => :journalized, :dependent => :destroy has_many :journals, :as => :journalized, :dependent => :destroy
has_many :journal_details, through: :journals has_many :journal_details, through: :journals
has_many :issue_tags_relates, dependent: :destroy
has_many :issue_tags, through: :issue_tags_relates
scope :issue_includes, ->{includes(:user)} scope :issue_includes, ->{includes(:user)}
# scope :issues_count, lambda{|tracker_id| where(tracker_id: tracker_id).size}
def get_assign_user def get_assign_user
User.select(:login, :lastname,:firstname, :nickname)&.find_by_id(self.assigned_to_id) User.select(:login, :lastname,:firstname, :nickname)&.find_by_id(self.assigned_to_id)
@ -32,7 +34,7 @@ class Issue < ApplicationRecord
new_attachment_name = self.attachments.select(:filename,:id).where(id: issue_files).pluck(:filename).join(",") new_attachment_name = self.attachments.select(:filename,:id).where(id: issue_files).pluck(:filename).join(",")
journal.journal_details.create(property: "attachment", prop_key: "#{issue_files.size}", old_value: old_attachment_names, value: new_attachment_name) journal.journal_details.create(property: "attachment", prop_key: "#{issue_files.size}", old_value: old_attachment_names, value: new_attachment_name)
end end
change_values = %w(subject description is_private assigned_to_id tracker_id status_id priority_id fixed_version_id start_date due_date estimated_hours done_ratio) change_values = %w(subject description is_private assigned_to_id tracker_id status_id priority_id fixed_version_id start_date due_date estimated_hours done_ratio issue_tags_value issue_type token)
change_values.each do |at| change_values.each do |at|
if self.send("saved_change_to_#{at}?") if self.send("saved_change_to_#{at}?")
journal.journal_details.create(property: "attr", prop_key: "#{at}", old_value: self.send("#{at}_before_last_save"), value: self.send(at)) journal.journal_details.create(property: "attr", prop_key: "#{at}", old_value: self.send("#{at}_before_last_save"), value: self.send(at))
@ -49,4 +51,20 @@ class Issue < ApplicationRecord
includes(:trakcer).where(tracker_id: tracker_id).size includes(:trakcer).where(tracker_id: tracker_id).size
end end
def get_issue_tags
if issue_tags.present?
issue_tags.select(:id,:name,:color).uniq.as_json
else
nil
end
end
def get_issue_tags_name
if issue_tags.present?
issue_tags.select(:name).uniq.pluck(:name).join(",")
else
nil
end
end
end end

@ -1,4 +1,7 @@
class IssueTag < ApplicationRecord class IssueTag < ApplicationRecord
has_many :issues
has_many :issue_tags_relates, dependent: :destroy
has_many :issues, through: :issue_tags_relates
belongs_to :project, optional: true belongs_to :project, optional: true
end end

@ -0,0 +1,4 @@
class IssueTagsRelate < ApplicationRecord
belongs_to :issue
belongs_to :issue_tag
end

@ -47,9 +47,13 @@ class Journal < ApplicationRecord
old_value = t.find(de[2]).try(:name) old_value = t.find(de[2]).try(:name)
value = t.find(de[3]).try(:name) value = t.find(de[3]).try(:name)
when "priority_id" when "priority_id"
t = IssueTag.select(:id, :title) t = IssuePriority.select(:id, :name)
old_value = t.find(de[2]).try(:title) old_value = t.find(de[2]).try(:name)
value = t.find(de[3]).try(:title) value = t.find(de[3]).try(:name)
when "issue_tags_value"
t = IssueTag.select(:id, :name)
old_value = t.where(id: de[2].split(",")).select(:id,:name,:color).as_json
value = t.where(id: de[3].split(",")).select(:id,:name,:color).as_json
when "fixed_version_id" when "fixed_version_id"
t = Version.select(:id, :title) t = Version.select(:id, :title)
old_value = t.find(de[2]).try(:title) old_value = t.find(de[2]).try(:title)

@ -1,2 +1,2 @@
json.partial! "commons/success" json.partial! "commons/success"
json.extract! @issue_tag, :id, :title, :description, :color,:project_id json.extract! @issue_tag, :id, :name, :description, :color,:project_id

@ -3,6 +3,6 @@ json.issue_tags_count @issue_tags_size
json.issue_tags do json.issue_tags do
json.array! @issue_tags.each.to_a do |tag| json.array! @issue_tags.each.to_a do |tag|
json.extract! tag, :id, :title, :description, :color, :issues_count, :project_id json.extract! tag, :id, :name, :description, :color, :issues_count, :project_id
end end
end end

@ -1,4 +1,6 @@
json.all_count @all_issues_size json.all_count @all_issues_size
json.open_count @open_issues_size json.open_count @open_issues_size
json.close_count @close_issues_size json.close_count @close_issues_size
json.normal_count @normal_issues_size
json.pay_count @pay_issues_size
json.commit_issues @commit_issues json.commit_issues @commit_issues

@ -1,7 +1,8 @@
json.partial! "commons/success" json.partial! "commons/success"
json.extract! @issue, :id,:subject,:description,:is_private,:assigned_to_id,:tracker_id,:status_id,:priority_id,:fixed_version_id, json.extract! @issue, :id,:subject,:description,:is_private,:assigned_to_id,:tracker_id,:status_id,:priority_id,:fixed_version_id,
:start_date,:due_date,:estimated_hours :start_date,:due_date,:estimated_hours, :issue_type, :token
json.done_ratio @issue.done_ratio.to_s + "%" json.done_ratio @issue.done_ratio.to_s + "%"
json.issue_tags @issue.get_issue_tags
json.issue_chosen @issue_chosen json.issue_chosen @issue_chosen
json.attachments do json.attachments do

@ -11,7 +11,8 @@ json.issues do
json.array! @issues.to_a do |issue| json.array! @issues.to_a do |issue|
json.id issue.id json.id issue.id
json.name issue.subject json.name issue.subject
json.created_at format_time(issue.created_on) json.format_time format_time(issue.created_on)
json.created_at time_from_now(issue.created_on)
json.updated_at format_time(issue.updated_on) json.updated_at format_time(issue.updated_on)
json.assign_user_name issue.get_assign_user.try(:show_real_name) json.assign_user_name issue.get_assign_user.try(:show_real_name)
json.assign_user_login issue.get_assign_user.try(:login) json.assign_user_login issue.get_assign_user.try(:login)
@ -19,9 +20,13 @@ json.issues do
json.author_login issue.user.try(:login) json.author_login issue.user.try(:login)
json.tracker issue.tracker.try(:name) json.tracker issue.tracker.try(:name)
json.issue_status issue.issue_status.try(:name) json.issue_status issue.issue_status.try(:name)
json.priority issue.issue_tag.try(:title) json.priority issue.priority.try(:title)
json.version issue.version.try(:title) json.version issue.version.try(:title)
json.done_ratio issue.done_ratio.to_s + "%" json.done_ratio issue.done_ratio.to_s + "%"
json.journals_count issue.get_journals_size json.journals_count issue.get_journals_size
json.issue_tags issue.get_issue_tags
json.issue_type issue.issue_type == "1" ? "普通" : "悬赏"
json.token issue.issue_type == "2" ? issue.token : ""
end end
end end

@ -1,5 +1,6 @@
json.partial! "commons/success" json.partial! "commons/success"
json.extract! @issue, :id,:subject,:description,:is_private, :start_date,:due_date,:estimated_hours json.extract! @issue, :id,:subject,:description,:is_private, :start_date,:due_date,:estimated_hours
json.closed_on @issue.closed_on.present? ? format_time(@issue.closed_on) : ""
json.created_at format_time(@issue.created_on) json.created_at format_time(@issue.created_on)
json.assign_user_name @issue_assign_to.try(:show_real_name) json.assign_user_name @issue_assign_to.try(:show_real_name)
json.assign_user_login @issue_assign_to.try(:login) json.assign_user_login @issue_assign_to.try(:login)
@ -8,9 +9,12 @@ json.author_login @issue_user.try(:login)
json.author_picture url_to_avatar(@issue_user) json.author_picture url_to_avatar(@issue_user)
json.tracker @issue.tracker.try(:name) json.tracker @issue.tracker.try(:name)
json.issue_status @issue.issue_status.try(:name) json.issue_status @issue.issue_status.try(:name)
json.priority @issue.issue_tag.try(:title) json.priority @issue.priority.try(:name)
json.version @issue.version.try(:title) json.version @issue.version.try(:title)
json.issue_tags @issue.get_issue_tags
json.done_ratio @issue.done_ratio.to_s + "%" json.done_ratio @issue.done_ratio.to_s + "%"
json.issue_type @issue.issue_type == "1" ? "普通" : "悬赏"
json.token @issue.issue_type == "2" ? @issue.token : ""
json.attachments do json.attachments do
json.array! @issue_attachments do |attachment| json.array! @issue_attachments do |attachment|
json.partial! "attachments/attachment_simple", locals: {attachment: attachment} json.partial! "attachments/attachment_simple", locals: {attachment: attachment}

@ -6,6 +6,7 @@ json.is_journal_detail journal.is_journal_detail? #判断是否修改了参数
json.content journal.try(:notes) json.content journal.try(:notes)
json.children_journals children_content(journal.id) json.children_journals children_content(journal.id)
json.journal_details journal.journal_content json.journal_details journal.journal_content
json.format_time format_time(journal.created_on)
json.created_at time_from_now(journal.created_on) json.created_at time_from_now(journal.created_on)
json.attachments do json.attachments do

@ -22,7 +22,7 @@ zh-CN:
assigned_to_id: 指派给 assigned_to_id: 指派给
tracker_id: 类型 tracker_id: 类型
status_id: 状态 status_id: 状态
priority_id: 标签 priority_id: 优先级
fixed_version_id: 里程碑 fixed_version_id: 里程碑
start_date: 开始日期 start_date: 开始日期
due_date: 结束日期 due_date: 结束日期
@ -32,3 +32,6 @@ zh-CN:
f: f:
true: true:
false: false:
issue_tag_ids: 标签
issue_type: 分类
token: 悬赏金额

@ -0,0 +1,8 @@
class AddIssuesTypeAndToken < ActiveRecord::Migration[5.2]
def change
add_column :issues, :issue_type, :string
add_column :issues, :token, :string
add_column :issues, :issue_tag_ids, :string
end
end

@ -0,0 +1,18 @@
class AddIssuePriorityToModel < ActiveRecord::Migration[5.2]
def change
unless ActiveRecord::Base.connection.table_exists? 'IssuePriority'
create_table :issue_priorities do |t|
t.string :name
t.integer :position
t.timestamps
end
add_index :issue_priorities, [:name]
pr_values = %w(低 正常 高 紧急 立刻)
pr_values.each_with_index do |v, index|
IssuePriority.create!(name: v, position: index+1)
end
end
end
end

@ -0,0 +1,5 @@
class RenameIssueTagTitle < ActiveRecord::Migration[5.2]
def change
rename_column :issue_tags, :title, :name
end
end

@ -0,0 +1,10 @@
class CreateIssueTagsRelates < ActiveRecord::Migration[5.2]
def change
create_table :issue_tags_relates do |t|
t.integer :issue_id
t.integer :issue_tag_id
t.timestamps
end
add_index :issue_tags_relates, [:issue_id, :issue_tag_id]
end
end

@ -0,0 +1,5 @@
class RenameIssuesIssueTagIds < ActiveRecord::Migration[5.2]
def change
rename_column :issues, :issue_tag_ids, :issue_tags_value
end
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe IssueTagsRelate, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
Loading…
Cancel
Save