From ecc799ab56a0e64668d347c2426b8501fe17b82c Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 2 Jul 2020 10:57:45 +0800 Subject: [PATCH] FIX: Delete related search data when record has been deleted. --- app/models/category.rb | 2 ++ app/models/post.rb | 1 + app/models/tag.rb | 2 ++ app/models/topic.rb | 2 +- app/models/user.rb | 1 + 5 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/category.rb b/app/models/category.rb index cb51a03cc48..cfd9de5556d 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -47,6 +47,8 @@ class Category < ActiveRecord::Base has_and_belongs_to_many :web_hooks + has_one :category_search_data, dependent: :delete + validates :user_id, presence: true validates :name, if: Proc.new { |c| c.new_record? || c.will_save_change_to_name? }, diff --git a/app/models/post.rb b/app/models/post.rb index a9880a8d26d..de9bb44f4ef 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -52,6 +52,7 @@ class Post < ActiveRecord::Base has_many :revisions, -> { order(:number) }, foreign_key: :post_id, class_name: 'PostRevision' has_many :user_actions, foreign_key: :target_post_id + has_one :post_search_data, dependent: :delete belongs_to :image_upload, class_name: "Upload" diff --git a/app/models/tag.rb b/app/models/tag.rb index 6ff6afe6091..7b18643c44a 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -39,6 +39,8 @@ class Tag < ActiveRecord::Base belongs_to :target_tag, class_name: "Tag", optional: true has_many :synonyms, class_name: "Tag", foreign_key: "target_tag_id", dependent: :destroy + has_one :tag_search_data, dependent: :delete + after_save :index_search after_save :update_synonym_associations diff --git a/app/models/topic.rb b/app/models/topic.rb index a26998897df..a32c07dad60 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -224,7 +224,7 @@ class Topic < ActiveRecord::Base has_one :user_warning has_one :first_post, -> { where post_number: 1 }, class_name: 'Post' - has_one :topic_search_data + has_one :topic_search_data, dependent: :delete has_one :topic_embed, dependent: :destroy belongs_to :image_upload, class_name: 'Upload' diff --git a/app/models/user.rb b/app/models/user.rb index acbcdb0c18c..66916d6d52d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -48,6 +48,7 @@ class User < ActiveRecord::Base has_one :anonymous_user_master, class_name: 'AnonymousUser', dependent: :destroy has_one :anonymous_user_shadow, ->(record) { where(active: true) }, foreign_key: :master_user_id, class_name: 'AnonymousUser', dependent: :destroy has_one :invited_user, dependent: :destroy + has_one :user_search_data, dependent: :delete # delete all is faster but bypasses callbacks has_many :bookmarks, dependent: :delete_all