Skip to content

Refactor: in_activeinactivated_at の命名を統一し、不要になった is_active カラムを削除する #1734

@yasulab

Description

@yasulab

📋 背景

PR #1726inactivated_at カラムを導入し、PR #1732 で年次フィルタリング機能を実装しました。現在、システム内に「inactive」と「inactivated」の2つの命名が混在しており、また is_active カラムと inactivated_at カラムが重複しています。

この Issue では、システム全体の一貫性を向上させるため、以下のリファクタリングを実施します。

✅ タスクリスト

Phase 1: データベース最適化

  • is_active カラムの削除
    • 全ての参照箇所を inactivated_at ベースのロジックに置き換え
    • マイグレーションファイルの作成
    • テストの更新

Phase 2: 命名の統一

  • CSSクラス名の変更: inactive-iteminactivated-item

    • app/assets/stylesheets/custom.scss の更新
    • 全てのビューファイルでクラス名を更新
    • テストの更新(特に spec/requests/dojos_spec.rb
  • 変数名・メソッド名の統一

    • コントローラー内の変数名
    • モデルのスコープ名(必要に応じて)
    • コメントの更新

📝 技術的詳細

1. is_active カラムの削除

現在の状態:

  • is_active (boolean) と inactivated_at (datetime) が重複
  • 124個の非アクティブ道場でデータ整合性は確認済み

移行方法:

# 現在のロジック
dojo.is_active

# 新しいロジック  
dojo.inactivated_at.nil?

2. CSS クラス名の変更

影響範囲:

  • /dojos ページのテーブル表示
  • /stats#prefectures セクションのテーブル
  • その他の統計関連ページ

3. 命名規則

統一方針:

  • inactive (形容詞): 状態を表す場合は使わない
  • inactivated (過去分詞): 「非アクティブ化された」という動作の結果を表す
  • 例: inactivated_at (非アクティブ化された時刻)

🎯 受け入れ基準

  1. 機能の維持: 既存の全機能が正常に動作すること
  2. テスト: 全てのテストが成功すること
  3. パフォーマンス: クエリ性能が劣化しないこと
  4. 一貫性: システム全体で命名が統一されていること

🔗 関連情報

💡 実装のヒント

  1. is_active の削除は慎重に

    • まず全ての参照箇所を洗い出す
    • grep -r "is_active" app/ lib/ spec/ で検索
  2. CSSクラス名の変更

    • grep -r "inactive-item" app/views/ app/assets/ で影響範囲を確認
  3. テストを先に修正

    • TDDアプローチで安全に進める

📌 メモ

このリファクタリングは機能追加ではなく、技術的負債の解消です。ユーザーに見える変化はありませんが、コードの保守性と一貫性が大幅に向上します。


優先度: 中(機能には影響しないが、長期的な保守性のために重要)
想定作業時間: 2-3時間
推奨時期: 次回の大きな機能追加の前

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions