feat: 投稿とタグのリレーション・テーブルについて論理削除と履歴を追加(#84) #148

マージ済み
みてるぞ が 5 個のコミットを feature/084 から main へマージ 2025-12-13 16:34:47 +09:00
オーナー

主要変更点

  • post_tags テーブルに対して論理削除コラム追加
  • 投稿更新時に外されたタグの関聯を論理削除するロジックに変更
  • 投稿追加、更新時に追加されたタグの関聯に操作者情報を登録するロジックに変更
  • ニコニコ同期時に外されたタグの関聯を論理削除するロジックに変更

テスト観点

  • 投稿追加時に post_tags.created_user_id に操作者が登録されること
  • タグ編輯時に追加したタグの post_tags.created_user_id に操作者が登録されること
  • タグ編輯時に削除したタグの post_tags.discarded_at に削除日時が登録されること
  • タグ編輯時に削除したタグの post_tags.deleted_user_id に操作者が登録されること
  • タグ編輯時に削除したことのあるタグを追加し,過去の削除レコードとは別に post_tags レコードが生えること
  • タグ編輯時に削除したことのあるタグを追加し,直後にそのタグを削除した際に同じ参照の post_tags レコードが 2 本生えること
  • ニコニコ同期時の新規動画に追加された nico タグの操作者が NULL であること
  • ニコニコ同期時の新規動画に追加された nico タグの連携タグの操作者が NULL であること
  • ニコニコ同期時の更新動画に追加された nico タグの操作者が NULL であること
  • ニコニコ同期時の更新動画に追加された nico タグの連携タグの操作者が NULL であること
  • ニコニコ同期時の更新動画に削除された nico タグの操作者が NULL であること
  • ニコニコ同期時の更新動画に削除された nico タグに削除日時が記録されること
  • 投稿追加時に親タグの post_tags.created_user_id に操作者が登録されること
  • タグ編輯時に追加したタグの親の post_tags.created_user_id に操作者が登録されること

テスト補足

ニコニコ同期のテストは,以下の形式の JSON を返す Python プログラムをもって API とみなし実施するとよい:

{ "id": number
, "code": string
, "title": string
, "description": string
, "tags": string[]
, "uploaded_at": string
, "deleted_at": null
}[]
### 主要変更点 - `post_tags` テーブルに対して論理削除コラム追加 - 投稿更新時に外されたタグの関聯を論理削除するロジックに変更 - 投稿追加、更新時に追加されたタグの関聯に操作者情報を登録するロジックに変更 - ニコニコ同期時に外されたタグの関聯を論理削除するロジックに変更 ### テスト観点 - [x] 投稿追加時に `post_tags.created_user_id` に操作者が登録されること - [x] タグ編輯時に追加したタグの `post_tags.created_user_id` に操作者が登録されること - [x] タグ編輯時に削除したタグの `post_tags.discarded_at` に削除日時が登録されること - [x] タグ編輯時に削除したタグの `post_tags.deleted_user_id` に操作者が登録されること - [x] タグ編輯時に削除したことのあるタグを追加し,過去の削除レコードとは別に `post_tags` レコードが生えること - [x] タグ編輯時に削除したことのあるタグを追加し,直後にそのタグを削除した際に同じ参照の `post_tags` レコードが 2 本生えること - [x] ニコニコ同期時の新規動画に追加された nico タグの操作者が NULL であること - [x] ニコニコ同期時の新規動画に追加された nico タグの連携タグの操作者が NULL であること - [x] ニコニコ同期時の更新動画に追加された nico タグの操作者が NULL であること - [x] ニコニコ同期時の更新動画に追加された nico タグの連携タグの操作者が NULL であること - [x] ニコニコ同期時の更新動画に削除された nico タグの操作者が NULL であること - [x] ニコニコ同期時の更新動画に削除された nico タグに削除日時が記録されること - [x] 投稿追加時に親タグの `post_tags.created_user_id` に操作者が登録されること - [x] タグ編輯時に追加したタグの親の `post_tags.created_user_id` に操作者が登録されること #### テスト補足 ニコニコ同期のテストは,以下の形式の JSON を返す Python プログラムをもって API とみなし実施するとよい: ``` { "id": number , "code": string , "title": string , "description": string , "tags": string[] , "uploaded_at": string , "deleted_at": null }[]
みてるぞ が自身を担当者に設定 2025-10-13 02:31:11 +09:00
みてるぞ がタイトルを feat: 投稿とタグのリレーション・テーブルについて論理削除と履歴を追加(q) から feat: 投稿とタグのリレーション・テーブルについて論理削除と履歴を追加(#84) に変更 2025-10-13 02:31:24 +09:00
みてるぞ がレビュー 2025-12-10 22:02:44 +09:00
@@ -2,2 +2,2 @@
has_many :post_tags, dependent: :destroy
has_many :posts, through: :post_tags
has_many :post_tags, dependent: :delete_all, inverse_of: :tag
has_many :active_post_tags, -> { kept }, class_name: 'PostTag', :inverse_of: :tag
作成者
オーナー

:inverse_of: :tag が文法エラー.

`:inverse_of: :tag` が文法エラー.
miteruzo がこの会話を解決済みにしました
みてるぞ がターゲットブランチを test から main に変更 2025-12-10 22:55:24 +09:00
みてるぞ がレビュー 2025-12-12 00:20:36 +09:00
@@ -0,0 +1,18 @@
class AddDiscardToPostTags < ActiveRecord::Migration[8.0]
def change
作成者
オーナー

change ではなく up にしたい.
down は設けず,不可逆な作りにしたはぅが安心.

`change` ではなく `up` にしたい. `down` は設けず,不可逆な作りにしたはぅが安心.
miteruzo がこの会話を解決済みにしました
みてるぞ がコミット 9a656a9e6emain にマージ 2025-12-13 16:34:46 +09:00
みてるぞ が作業を開始 2026-01-31 01:45:30 +09:00
みてるぞ33min 15s の作業を終了 2026-01-31 02:18:45 +09:00
サインインしてこの会話に参加.
レビューアなし
1 人の参加者
通知
かかった時間の合計: 33 minutes
みてるぞ
33 minutes
期日
期日は設定されてゐません.
依存関係

依存関係は設定されてゐません.

リファレンス: miteruzo/btrc-hub#148