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