From 3a7df81d67448807a6e2a4e86def949799734c20 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Sat, 28 Dec 2019 00:37:23 +0800 Subject: [PATCH] =?UTF-8?q?issue=E7=9A=84=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 2 +- app/controllers/issue_tags_controller.rb | 12 +-- app/controllers/issues_controller.rb | 85 ++++++++++++++++--- app/helpers/issues_helper.rb | 7 +- app/models/issue.rb | 26 +++++- app/models/issue_tag.rb | 5 +- app/models/issue_tags_relate.rb | 4 + app/models/journal.rb | 10 ++- app/views/issue_tags/edit.json.jbuilder | 2 +- app/views/issue_tags/index.json.jbuilder | 2 +- app/views/issues/commit_issues.json.jbuilder | 2 + app/views/issues/edit.json.jbuilder | 3 +- app/views/issues/index.json.jbuilder | 9 +- app/views/issues/show.json.jbuilder | 6 +- .../journals/_journal_item.json.jbuilder | 1 + config/locales/zh-CN.yml | 5 +- ...0191227084951_add_issues_type_and_token.rb | 8 ++ ...91227090611_add_issue_priority_to_model.rb | 18 ++++ .../20191227105755_rename_issue_tag_title.rb | 5 ++ ...0191227140150_create_issue_tags_relates.rb | 10 +++ ...91227162744_rename_issues_issue_tag_ids.rb | 5 ++ spec/models/issue_tags_relate_spec.rb | 5 ++ 22 files changed, 196 insertions(+), 36 deletions(-) create mode 100644 app/models/issue_tags_relate.rb create mode 100644 db/migrate/20191227084951_add_issues_type_and_token.rb create mode 100644 db/migrate/20191227090611_add_issue_priority_to_model.rb create mode 100644 db/migrate/20191227105755_rename_issue_tag_title.rb create mode 100644 db/migrate/20191227140150_create_issue_tags_relates.rb create mode 100644 db/migrate/20191227162744_rename_issues_issue_tag_ids.rb create mode 100644 spec/models/issue_tags_relate_spec.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 65910cfc0..d3ce1e97a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -328,7 +328,7 @@ class ApplicationController < ActionController::Base def current_user # User.current - User.find_by_id 50207 + User.find_by_id 1 end ## 默认输出json diff --git a/app/controllers/issue_tags_controller.rb b/app/controllers/issue_tags_controller.rb index 345627f8d..fa7412df3 100644 --- a/app/controllers/issue_tags_controller.rb +++ b/app/controllers/issue_tags_controller.rb @@ -19,18 +19,18 @@ class IssueTagsController < ApplicationController def create - title = params[:title].to_s.strip + title = params[:name].to_s.strip desc = params[:description] color = params[:color] || "#ccc" tag_params = { - title: title, + name: title, description: desc, color: color } if title.present? - if IssueTag.exists?(title: title, project_id: @project.id) + if IssueTag.exists?(name: title, project_id: @project.id) normal_status(-1, "标签已存在") else issue_tag = IssueTag.new(tag_params.merge(project_id: @project.id, user_id: current_user.id)) @@ -52,17 +52,17 @@ class IssueTagsController < ApplicationController end def update - title = params[:title] + title = params[:name] desc = params[:description] color = params[:color] || "#ccc" tag_params = { - title: title, + name: title, description: desc, color: color } 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, "标签已存在") else if @issue_tag.update_attributes(tag_params) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 848838c71..b7068dc0c 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -6,7 +6,7 @@ class IssuesController < ApplicationController before_action :set_issue, only: [:edit, :update, :destroy, :show, :copy, :index_chosen] 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)) @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(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(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_name = params[:order_name] || "created_on" #或者"updated_on" @@ -72,6 +74,8 @@ class IssuesController < ApplicationController @all_issues_size = issues.size @open_issues_size = issues.where.not(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 @@ -79,6 +83,10 @@ class IssuesController < ApplicationController issues = issues.where.not(status_id: 5) elsif status_type.to_s == "2" #表示关闭中的 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 @commit_issues = [] @@ -121,6 +129,10 @@ class IssuesController < ApplicationController def create if params[:subject].blank? 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 issue_params = { subject: params[:subject], @@ -134,7 +146,11 @@ class IssuesController < ApplicationController start_date: params[:start_date].to_s.to_date, due_date: params[:due_date].to_s.to_date, 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)) if @issue.save! @@ -147,6 +163,11 @@ class IssuesController < ApplicationController 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? Tiding.create!(user_id: params[:assigned_to_id], trigger_user_id: current_user.id, container_id: @issue.id, container_type: 'Issue', @@ -180,7 +201,10 @@ class IssuesController < ApplicationController due_date: params[:due_date].to_s.to_date, estimated_hours: params[:estimated_hours], 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) @@ -207,6 +231,19 @@ class IssuesController < ApplicationController 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) normal_status(0, "更新成功") @@ -267,9 +304,11 @@ class IssuesController < ApplicationController end def issue_left_chosen(project,issue_id) - issue_info = Array.new(9) + issue_info = Array.new(11) + use_tags = [] 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_info[0] end @@ -307,13 +346,12 @@ class IssuesController < ApplicationController end end - - issue_priority = project.issue_tags&.pluck(:id,:title, :color) - new_priority_info = [] #issue标签,(优先程度) + issue_priority = IssuePriority&.pluck(:id,:name, :position) + new_priority_info = [] #优先度 if issue_priority.size > 0 issue_priority.each do |t| 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) end end @@ -339,27 +377,48 @@ class IssuesController < ApplicationController 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, "tracker": new_tracker_info, "issue_status": new_status_info, - "issue_tag": new_priority_info, + "priority": new_priority_info, "issue_version": new_version_info, "start_date": issue_info[5], "due_date": issue_info[6], "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 def export_issues(issues) - @table_columns = %w(ID 类型 标题 描述 状态 指派给 优先级 发布人 创建时间 里程碑 开始时间 截止时间 完成度) + @table_columns = %w(ID 类型 标题 描述 状态 指派给 优先级 标签 发布人 创建时间 里程碑 开始时间 截止时间 完成度 分类 金额) @export_issues = [] 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), - 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) diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 102c0a17e..3c3bfd08f 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -28,7 +28,8 @@ module IssuesHelper journal_info = { id: j.id, 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_login: j.user.try(:login), user_pictrue: url_to_avatar(j.user) @@ -39,4 +40,8 @@ module IssuesHelper children_journal_content end + # def get_issue_tags(issue_tag_ids) + # IssueTag.where(id: issue_tag_ids).select(:id,:name,:color).as_json + # end + end \ No newline at end of file diff --git a/app/models/issue.rb b/app/models/issue.rb index 5d92f246e..431334be9 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1,7 +1,9 @@ class Issue < ApplicationRecord + #issue_type 1为普通,2为悬赏 belongs_to :project 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 :user,optional: true, foreign_key: :author_id belongs_to :issue_status, foreign_key: :status_id,optional: true @@ -10,11 +12,11 @@ class Issue < ApplicationRecord has_many :memos has_many :journals, :as => :journalized, :dependent => :destroy 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 :issues_count, lambda{|tracker_id| where(tracker_id: tracker_id).size} - def get_assign_user 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(",") journal.journal_details.create(property: "attachment", prop_key: "#{issue_files.size}", old_value: old_attachment_names, value: new_attachment_name) 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| 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)) @@ -49,4 +51,20 @@ class Issue < ApplicationRecord includes(:trakcer).where(tracker_id: tracker_id).size 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 \ No newline at end of file diff --git a/app/models/issue_tag.rb b/app/models/issue_tag.rb index 4f1ac9757..e39e72df4 100644 --- a/app/models/issue_tag.rb +++ b/app/models/issue_tag.rb @@ -1,4 +1,7 @@ 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 + end diff --git a/app/models/issue_tags_relate.rb b/app/models/issue_tags_relate.rb new file mode 100644 index 000000000..33c181d1c --- /dev/null +++ b/app/models/issue_tags_relate.rb @@ -0,0 +1,4 @@ +class IssueTagsRelate < ApplicationRecord + belongs_to :issue + belongs_to :issue_tag +end diff --git a/app/models/journal.rb b/app/models/journal.rb index b3f078ec3..2bf12d9be 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -47,9 +47,13 @@ class Journal < ApplicationRecord old_value = t.find(de[2]).try(:name) value = t.find(de[3]).try(:name) when "priority_id" - t = IssueTag.select(:id, :title) - old_value = t.find(de[2]).try(:title) - value = t.find(de[3]).try(:title) + t = IssuePriority.select(:id, :name) + old_value = t.find(de[2]).try(:name) + 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" t = Version.select(:id, :title) old_value = t.find(de[2]).try(:title) diff --git a/app/views/issue_tags/edit.json.jbuilder b/app/views/issue_tags/edit.json.jbuilder index 7aa831920..7e54d8526 100644 --- a/app/views/issue_tags/edit.json.jbuilder +++ b/app/views/issue_tags/edit.json.jbuilder @@ -1,2 +1,2 @@ json.partial! "commons/success" -json.extract! @issue_tag, :id, :title, :description, :color,:project_id \ No newline at end of file +json.extract! @issue_tag, :id, :name, :description, :color,:project_id \ No newline at end of file diff --git a/app/views/issue_tags/index.json.jbuilder b/app/views/issue_tags/index.json.jbuilder index e71945841..7b2ddee3a 100644 --- a/app/views/issue_tags/index.json.jbuilder +++ b/app/views/issue_tags/index.json.jbuilder @@ -3,6 +3,6 @@ json.issue_tags_count @issue_tags_size json.issue_tags do 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 \ No newline at end of file diff --git a/app/views/issues/commit_issues.json.jbuilder b/app/views/issues/commit_issues.json.jbuilder index 36becb175..e57ce29ac 100644 --- a/app/views/issues/commit_issues.json.jbuilder +++ b/app/views/issues/commit_issues.json.jbuilder @@ -1,4 +1,6 @@ json.all_count @all_issues_size json.open_count @open_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 \ No newline at end of file diff --git a/app/views/issues/edit.json.jbuilder b/app/views/issues/edit.json.jbuilder index eb9dc880f..fe60f436e 100644 --- a/app/views/issues/edit.json.jbuilder +++ b/app/views/issues/edit.json.jbuilder @@ -1,7 +1,8 @@ json.partial! "commons/success" 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.issue_tags @issue.get_issue_tags json.issue_chosen @issue_chosen json.attachments do diff --git a/app/views/issues/index.json.jbuilder b/app/views/issues/index.json.jbuilder index 46335c476..cee72b8b6 100644 --- a/app/views/issues/index.json.jbuilder +++ b/app/views/issues/index.json.jbuilder @@ -11,7 +11,8 @@ json.issues do json.array! @issues.to_a do |issue| json.id issue.id 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.assign_user_name issue.get_assign_user.try(:show_real_name) 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.tracker issue.tracker.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.done_ratio issue.done_ratio.to_s + "%" 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 diff --git a/app/views/issues/show.json.jbuilder b/app/views/issues/show.json.jbuilder index 1416e91e5..a1b928bcd 100644 --- a/app/views/issues/show.json.jbuilder +++ b/app/views/issues/show.json.jbuilder @@ -1,5 +1,6 @@ json.partial! "commons/success" 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.assign_user_name @issue_assign_to.try(:show_real_name) 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.tracker @issue.tracker.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.issue_tags @issue.get_issue_tags 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.array! @issue_attachments do |attachment| json.partial! "attachments/attachment_simple", locals: {attachment: attachment} diff --git a/app/views/journals/_journal_item.json.jbuilder b/app/views/journals/_journal_item.json.jbuilder index 3c0de5453..03fd35c7b 100644 --- a/app/views/journals/_journal_item.json.jbuilder +++ b/app/views/journals/_journal_item.json.jbuilder @@ -6,6 +6,7 @@ json.is_journal_detail journal.is_journal_detail? #判断是否修改了参数 json.content journal.try(:notes) json.children_journals children_content(journal.id) json.journal_details journal.journal_content +json.format_time format_time(journal.created_on) json.created_at time_from_now(journal.created_on) json.attachments do diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index a8d5d1583..b72db9435 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -22,7 +22,7 @@ zh-CN: assigned_to_id: 指派给 tracker_id: 类型 status_id: 状态 - priority_id: 标签 + priority_id: 优先级 fixed_version_id: 里程碑 start_date: 开始日期 due_date: 结束日期 @@ -32,3 +32,6 @@ zh-CN: f: 否 true: 是 false: 否 + issue_tag_ids: 标签 + issue_type: 分类 + token: 悬赏金额 diff --git a/db/migrate/20191227084951_add_issues_type_and_token.rb b/db/migrate/20191227084951_add_issues_type_and_token.rb new file mode 100644 index 000000000..4d547f596 --- /dev/null +++ b/db/migrate/20191227084951_add_issues_type_and_token.rb @@ -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 diff --git a/db/migrate/20191227090611_add_issue_priority_to_model.rb b/db/migrate/20191227090611_add_issue_priority_to_model.rb new file mode 100644 index 000000000..f6a4e9ba6 --- /dev/null +++ b/db/migrate/20191227090611_add_issue_priority_to_model.rb @@ -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 diff --git a/db/migrate/20191227105755_rename_issue_tag_title.rb b/db/migrate/20191227105755_rename_issue_tag_title.rb new file mode 100644 index 000000000..70d530584 --- /dev/null +++ b/db/migrate/20191227105755_rename_issue_tag_title.rb @@ -0,0 +1,5 @@ +class RenameIssueTagTitle < ActiveRecord::Migration[5.2] + def change + rename_column :issue_tags, :title, :name + end +end diff --git a/db/migrate/20191227140150_create_issue_tags_relates.rb b/db/migrate/20191227140150_create_issue_tags_relates.rb new file mode 100644 index 000000000..857f1706e --- /dev/null +++ b/db/migrate/20191227140150_create_issue_tags_relates.rb @@ -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 diff --git a/db/migrate/20191227162744_rename_issues_issue_tag_ids.rb b/db/migrate/20191227162744_rename_issues_issue_tag_ids.rb new file mode 100644 index 000000000..a910b1379 --- /dev/null +++ b/db/migrate/20191227162744_rename_issues_issue_tag_ids.rb @@ -0,0 +1,5 @@ +class RenameIssuesIssueTagIds < ActiveRecord::Migration[5.2] + def change + rename_column :issues, :issue_tag_ids, :issue_tags_value + end +end diff --git a/spec/models/issue_tags_relate_spec.rb b/spec/models/issue_tags_relate_spec.rb new file mode 100644 index 000000000..2ff3a27f3 --- /dev/null +++ b/spec/models/issue_tags_relate_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe IssueTagsRelate, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end