-
-
Notifications
You must be signed in to change notification settings - Fork 109
Closed
Labels
急ぎじゃないよMake something better but not rushed.Make something better but not rushed.
Description
📋 背景
PR #1726 で inactivated_at
カラムを導入し、PR #1732 で年次フィルタリング機能を実装しました。現在、システム内に「inactive」と「inactivated」の2つの命名が混在しており、また is_active
カラムと inactivated_at
カラムが重複しています。
この Issue では、システム全体の一貫性を向上させるため、以下のリファクタリングを実施します。
✅ タスクリスト
- Updated tasks to this
Phase 1: データベース最適化
-
is_active
カラムの削除- 全ての参照箇所を
inactivated_at
ベースのロジックに置き換え - マイグレーションファイルの作成
- テストの更新
- 全ての参照箇所を
Phase 2: 命名の統一
-
CSSクラス名の変更:
inactive-item
→inactivated-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
(非アクティブ化された時刻)
🎯 受け入れ基準
- 機能の維持: 既存の全機能が正常に動作すること
- テスト: 全てのテストが成功すること
- パフォーマンス: クエリ性能が劣化しないこと
- 一貫性: システム全体で命名が統一されていること
🔗 関連情報
- PR 📊 Add
inactivated_at
toDojo
model to replaceis_active
boolean column #1726:inactivated_at
カラムの追加 - PR 📥 Enable to download Dojo stats as
CSV
for specific year #1732: 年次フィルタリング機能の実装 - Issue Dojo モデルに inactived_at を追加し、より正確な統計情報にする #1373: 元の問題(統計グラフから非アクティブ道場が消える)
💡 実装のヒント
-
is_active
の削除は慎重に- まず全ての参照箇所を洗い出す
grep -r "is_active" app/ lib/ spec/
で検索
-
CSSクラス名の変更
grep -r "inactive-item" app/views/ app/assets/
で影響範囲を確認
-
テストを先に修正
- TDDアプローチで安全に進める
📌 メモ
このリファクタリングは機能追加ではなく、技術的負債の解消です。ユーザーに見える変化はありませんが、コードの保守性と一貫性が大幅に向上します。
優先度: 中(機能には影響しないが、長期的な保守性のために重要)
想定作業時間: 2-3時間
推奨時期: 次回の大きな機能追加の前
Metadata
Metadata
Assignees
Labels
急ぎじゃないよMake something better but not rushed.Make something better but not rushed.