From 7a6d549fa04c63b7a7bafdec2b2081ab2ca63c91 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 6 Apr 2023 15:40:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=A0=87=E7=AD=BE=E5=88=A0=E9=99=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/project_topics_controller.rb | 15 +++++++++++++++ app/controllers/projects_controller.rb | 1 + config/routes/api.rb | 4 ++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/project_topics_controller.rb b/app/controllers/api/v1/project_topics_controller.rb index 3a23fde4a..5d353fbf4 100644 --- a/app/controllers/api/v1/project_topics_controller.rb +++ b/app/controllers/api/v1/project_topics_controller.rb @@ -24,6 +24,21 @@ class Api::V1::ProjectTopicsController < Api::V1::BaseController end end + def destroy + ActiveRecord::Base.transaction do + @project = Project.find_by_id(create_params[:project_id]) + return render_not_found unless @project.present? + + @project_topic = ProjectTopic.find_by_id(params[:id]) + @project_topic_ralate = @project_topic.project_topic_ralates.find_by(project_id: @project.id) + if @project_topic_ralate.destroy! + render_ok + else + render_error("项目取消关联搜索标签失败.") + end + end + end + private def create_params params.permit(:project_id, :name) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 9586c1e91..652e80ec6 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -130,6 +130,7 @@ class ProjectsController < ApplicationController # 临时特殊处理修改website、lesson_url操作方法 if project_params.has_key?("website") if params[:project_topic_names].present? && params[:project_topic_names].is_a?(Array) + ProjectTopicRalate.where(project: @project).destroy_all params[:project_topic_names].each do |name| project_topic = ProjectTopic.find_or_create_by!(name: name.downcase) project_topic.project_topic_ralates.find_or_create_by!(project: @project) diff --git a/config/routes/api.rb b/config/routes/api.rb index 799783f0d..a1945ab43 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -20,7 +20,7 @@ defaults format: :json do scope ':repo' do # projects - resource :projects, path: '/', only: [:show, :update, :edit, :destroy] do + resource :projects, path: '/', only: [:show, :update, :edit] do collection do get :compare get :blame @@ -97,7 +97,7 @@ defaults format: :json do end resources :projects, only: [:index] - resources :project_topics, only: [:index, :create] + resources :project_topics, only: [:index, :create, :destroy] end