---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 130
  claims_with_evidence: 130
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：activemodel 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：130 / 130、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全テストケースにソースコードの根拠あり
  2. **なし**：根拠不足なし
  3. **なし**：根拠不足なし

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `activemodel/lib/active_model.rb` - ActiveModelモジュールのメインエントリポイント
- E-02: `activemodel/lib/active_model/validations.rb` - Validationsモジュールの実装（valid?, invalid?, validate!, errors等）
- E-03: `activemodel/lib/active_model/errors.rb` - Errorsクラスの実装（add, [], full_messages, where等）
- E-04: `activemodel/lib/active_model/error.rb` - Errorクラスの実装（message, full_message, match?等）
- E-05: `activemodel/lib/active_model/attributes.rb` - Attributesモジュールの実装（attribute, attributes, attribute_names）
- E-06: `activemodel/lib/active_model/model.rb` - Modelモジュールの実装（slice, values_at）
- E-07: `activemodel/lib/active_model/api.rb` - APIモジュールの実装（initialize, persisted?）
- E-08: `activemodel/lib/active_model/dirty.rb` - Dirtyモジュールの実装（changed?, changes, attribute_changed?等）
- E-09: `activemodel/lib/active_model/callbacks.rb` - Callbacksモジュールの実装（define_model_callbacks）
- E-10: `activemodel/lib/active_model/secure_password.rb` - SecurePasswordモジュールの実装（has_secure_password, authenticate）
- E-11: `activemodel/lib/active_model/naming.rb` - NamingモジュールとNameクラスの実装
- E-12: `activemodel/lib/active_model/conversion.rb` - Conversionモジュールの実装（to_model, to_key, to_param, to_partial_path）
- E-13: `activemodel/lib/active_model/serialization.rb` - Serializationモジュールの実装（serializable_hash）
- E-14: `activemodel/lib/active_model/attribute_methods.rb` - AttributeMethodsモジュールの実装
- E-15: `activemodel/lib/active_model/attribute_assignment.rb` - AttributeAssignmentモジュールの実装
- E-16: `activemodel/lib/active_model/validator.rb` - Validator, EachValidator, BlockValidatorクラスの実装
- E-17: `activemodel/lib/active_model/validations/presence.rb` - PresenceValidatorの実装
- E-18: `activemodel/lib/active_model/validations/length.rb` - LengthValidatorの実装
- E-19: `activemodel/lib/active_model/validations/numericality.rb` - NumericalityValidatorの実装
- E-20: `activemodel/lib/active_model/type/value.rb` - Type::Valueクラスの実装

## 3) Claims と根拠の対応（レビューの主戦場）

### Validationsモジュール（UT-AMO-001〜013）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | valid?メソッドはバリデーション成功時にtrueを返す | E-02 (validations.rb:367-374) | ○ |
| C-02 | valid?メソッドはバリデーション失敗時にfalseを返す | E-02 (validations.rb:367-374) | ○ |
| C-03 | valid?メソッドはコンテキスト引数を受け取る | E-02 (validations.rb:367) | ○ |
| C-04 | invalid?メソッドはvalid?の逆を返す | E-02 (validations.rb:414-416) | ○ |
| C-05 | validate!メソッドは失敗時にValidationErrorを発生させる | E-02 (validations.rb:423-424) | ○ |
| C-06 | errorsメソッドはErrorsオブジェクトを返す | E-02 (validations.rb:334-336) | ○ |
| C-07 | validates_eachはブロックでバリデーションを定義する | E-02 (validations.rb:93-95) | ○ |
| C-08 | validateメソッドでカスタムバリデーションを登録できる | E-02 (validations.rb:166-191) | ○ |
| C-09 | validateメソッドは不正オプションでArgumentErrorを発生させる | E-02 (validations.rb:170-173) | ○ |
| C-10 | validatorsメソッドは登録済みバリデータを返す | E-02 (validations.rb:210-212) | ○ |
| C-11 | validators_onメソッドは属性のバリデータを返す | E-02 (validations.rb:272-276) | ○ |
| C-12 | clear_validators!メソッドは全バリデータをクリアする | E-02 (validations.rb:252-255) | ○ |

### Errorsクラス（UT-AMO-014〜030）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | Errorsは空の配列で初期化される | E-03 (errors.rb:115-118) | ○ |
| C-14 | addメソッドはErrorオブジェクトを追加する | E-03 (errors.rb:340-352) | ○ |
| C-15 | addメソッドはstrict:trueでStrictValidationFailedを発生させる | E-03 (errors.rb:344-347) | ○ |
| C-16 | []メソッドは属性のメッセージ配列を返す | E-03 (errors.rb:227-229) | ○ |
| C-17 | full_messagesメソッドは完全メッセージ配列を返す | E-03 (errors.rb:413-416) | ○ |
| C-18 | include?メソッドはエラー存在を確認する | E-03 (errors.rb:200-204) | ○ |
| C-19 | deleteメソッドは指定属性のエラーを削除する | E-03 (errors.rb:213-220) | ○ |
| C-20 | clearメソッドは全エラーをクリアする | E-03 (errors.rb:101) | ○ |
| C-21 | whereメソッドは条件に合致するエラーを返す | E-03 (errors.rb:187-192) | ○ |
| C-22 | added?メソッドは追加済みエラーを確認する | E-03 (errors.rb:370-380) | ○ |
| C-23 | of_kind?メソッドはエラータイプを確認する | E-03 (errors.rb:393-401) | ○ |
| C-24 | merge!メソッドは他のErrorsをマージする | E-03 (errors.rb:172-178) | ○ |
| C-25 | to_hashメソッドはハッシュ形式を返す | E-03 (errors.rb:254-259) | ○ |

### Errorクラス（UT-AMO-031〜037）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | Errorはbase, attribute, type, optionsで初期化される | E-04 (error.rb:103-109) | ○ |
| C-27 | messageメソッドはI18n翻訳されたメッセージを返す | E-04 (error.rb:135-142) | ○ |
| C-28 | full_messageメソッドは属性名付きメッセージを返す | E-04 (error.rb:159-161) | ○ |
| C-29 | detailsメソッドはエラー詳細ハッシュを返す | E-04 (error.rb:149-151) | ○ |
| C-30 | match?メソッドは条件マッチを確認する | E-04 (error.rb:166-178) | ○ |
| C-31 | strict_match?メソッドは完全一致を確認する | E-04 (error.rb:184-188) | ○ |

### Attributesモジュール（UT-AMO-038〜042）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | attributeメソッドで属性を定義できる | E-05 (attributes.rb:63-66) | ○ |
| C-33 | attributeメソッドはdefaultオプションをサポートする | E-05 (attributes.rb:45-56) | ○ |
| C-34 | attributesメソッドは全属性ハッシュを返す | E-05 (attributes.rb:135-137) | ○ |
| C-35 | attribute_namesメソッドは属性名配列を返す | E-05 (attributes.rb:150-152) | ○ |

### Modelモジュール（UT-AMO-043〜046）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | Modelはハッシュで初期化できる | E-06 (model.rb:42-45), E-07 (api.rb:81-85) | ○ |
| C-37 | sliceメソッドは指定属性のハッシュを返す | E-06 (model.rb:47-60) | ○ |
| C-38 | values_atメソッドは指定属性の値配列を返す | E-06 (model.rb:62-74) | ○ |

### APIモジュール（UT-AMO-047）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | persisted?はデフォルトでfalseを返す | E-07 (api.rb:96-98) | ○ |

### Dirtyモジュール（UT-AMO-048〜059）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | changed?メソッドは変更有無を返す | E-08 (dirty.rb:286-288) | ○ |
| C-41 | changedメソッドは変更属性名配列を返す | E-08 (dirty.rb:295-297) | ○ |
| C-42 | changesメソッドは変更内容ハッシュを返す | E-08 (dirty.rb:353-355) | ○ |
| C-43 | attribute_changed?メソッドは属性変更を確認する | E-08 (dirty.rb:300-302) | ○ |
| C-44 | attribute_wasメソッドは変更前値を返す | E-08 (dirty.rb:304-307) | ○ |
| C-45 | changes_appliedメソッドは変更を適用する | E-08 (dirty.rb:272-279) | ○ |
| C-46 | clear_changes_informationメソッドは変更情報をクリアする | E-08 (dirty.rb:325-329) | ○ |
| C-47 | restore_attributesメソッドは属性を復元する | E-08 (dirty.rb:320-322) | ○ |
| C-48 | previous_changesメソッドは前回の変更を返す | E-08 (dirty.rb:363-365) | ○ |
| C-49 | attribute_previously_changed?メソッドは前回変更を確認する | E-08 (dirty.rb:310-312) | ○ |

### Callbacksモジュール（UT-AMO-060〜064）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-50 | define_model_callbacksでコールバックを定義できる | E-09 (callbacks.rb:109-126) | ○ |
| C-51 | onlyオプションで特定コールバックのみ定義できる | E-09 (callbacks.rb:117) | ○ |
| C-52 | before_*コールバックが実行される | E-09 (callbacks.rb:129-134) | ○ |
| C-53 | after_*コールバックが実行される | E-09 (callbacks.rb:143-152) | ○ |
| C-54 | around_*コールバックが実行される | E-09 (callbacks.rb:136-140) | ○ |

### SecurePasswordモジュール（UT-AMO-065〜072）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | has_secure_passwordでパスワード機能を追加できる | E-10 (secure_password.rb:194-261) | ○ |
| C-56 | password=でパスワードがハッシュ化される | E-10 (secure_password.rb:268-277) | ○ |
| C-57 | authenticateで認証できる | E-10 (secure_password.rb:291-294) | ○ |
| C-58 | バリデーションがデフォルトで有効 | E-10 (secure_password.rb:209-236) | ○ |

### Namingモジュール（UT-AMO-073〜081）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-59 | Nameオブジェクトが初期化される | E-11 (naming.rb:165-184) | ○ |
| C-60 | 空クラス名でArgumentErrorが発生する | E-11 (naming.rb:168) | ○ |
| C-61 | singularが単数形を返す | E-11 (naming.rb:172) | ○ |
| C-62 | pluralが複数形を返す | E-11 (naming.rb:173) | ○ |
| C-63 | humanが人間可読形式を返す | E-11 (naming.rb:196-206) | ○ |
| C-64 | i18n_keyがI18nキーを返す | E-11 (naming.rb:179) | ○ |
| C-65 | model_nameがActiveModel::Nameを返す | E-11 (naming.rb:269-276) | ○ |

### Conversionモジュール（UT-AMO-082〜087）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | to_modelがselfを返す | E-12 (conversion.rb:49-51) | ○ |
| C-67 | to_keyがidの配列を返す | E-12 (conversion.rb:67-70) | ○ |
| C-68 | to_paramが永続化済みオブジェクトでIDを返す | E-12 (conversion.rb:90-92) | ○ |
| C-69 | to_partial_pathがパーシャルパスを返す | E-12 (conversion.rb:103-105) | ○ |

### Serializationモジュール（UT-AMO-088〜091）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-70 | serializable_hashが属性ハッシュを返す | E-13 (serialization.rb:125-149) | ○ |
| C-71 | onlyオプションで限定できる | E-13 (serialization.rb:130-131) | ○ |
| C-72 | exceptオプションで除外できる | E-13 (serialization.rb:132-133) | ○ |
| C-73 | methodsオプションでメソッド結果を含められる | E-13 (serialization.rb:138) | ○ |

### AttributeMethodsモジュール（UT-AMO-092〜098）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-74 | attribute_method_prefixでプレフィックスを定義できる | E-14 (attribute_methods.rb:106-109) | ○ |
| C-75 | attribute_method_suffixでサフィックスを定義できる | E-14 (attribute_methods.rb:140-143) | ○ |
| C-76 | attribute_method_affixでアフィックスを定義できる | E-14 (attribute_methods.rb:175-178) | ○ |
| C-77 | alias_attributeで属性エイリアスを定義できる | E-14 (attribute_methods.rb:203-209) | ○ |
| C-78 | define_attribute_methodsで属性メソッドを定義できる | E-14 (attribute_methods.rb:272-281) | ○ |
| C-79 | undefine_attribute_methodsで属性メソッドを削除できる | E-14 (attribute_methods.rb:375-380) | ○ |

### AttributeAssignmentモジュール（UT-AMO-099〜102）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | assign_attributesで属性を一括設定できる | E-15 (attribute_assignment.rb:28-35) | ○ |
| C-81 | 非ハッシュでArgumentErrorが発生する | E-15 (attribute_assignment.rb:29-31) | ○ |
| C-82 | 未知属性でUnknownAttributeErrorが発生する | E-15 (attribute_assignment.rb:56-58) | ○ |

### Validatorクラス（UT-AMO-103〜109）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-83 | kindがバリデータの種類を返す | E-16 (validator.rb:103-105) | ○ |
| C-84 | 未実装validateでNotImplementedErrorが発生する | E-16 (validator.rb:122-124) | ○ |
| C-85 | EachValidatorがattributesを設定する | E-16 (validator.rb:140-145) | ○ |
| C-86 | 空attributesでArgumentErrorが発生する | E-16 (validator.rb:142) | ○ |
| C-87 | validateが各属性でvalidate_eachを呼ぶ | E-16 (validator.rb:150-157) | ○ |
| C-88 | allow_nilオプションがサポートされる | E-16 (validator.rb:176-182) | ○ |
| C-89 | allow_blankオプションがサポートされる | E-16 (validator.rb:184-190) | ○ |

### 個別Validator（UT-AMO-110〜120）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-90 | PresenceValidatorがblankでエラーを追加する | E-17 (presence.rb:5-9) | ○ |
| C-91 | LengthValidatorが最小長違反でエラーを追加する | E-18 (length.rb:47-66) | ○ |
| C-92 | LengthValidatorが最大長違反でエラーを追加する | E-18 (length.rb:47-66) | ○ |
| C-93 | LengthValidatorがis不一致でエラーを追加する | E-18 (length.rb:47-66) | ○ |
| C-94 | LengthValidatorがオプションなしでArgumentErrorを発生させる | E-18 (length.rb:29-44) | ○ |
| C-95 | NumericalityValidatorが非数値でエラーを追加する | E-19 (numericality.rb:36-45) | ○ |
| C-96 | NumericalityValidatorがonly_integerで整数チェックする | E-19 (numericality.rb:42-45) | ○ |
| C-97 | NumericalityValidatorが比較チェックする | E-19 (numericality.rb:58-62) | ○ |

### Type::Value（UT-AMO-121〜127）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-98 | castで値をキャストできる | E-20 (type/value.rb:57-59) | ○ |
| C-99 | nilでnilを返す | E-20 (type/value.rb:58) | ○ |
| C-100 | deserializeでデシリアライズできる | E-20 (type/value.rb:43-45) | ○ |
| C-101 | serializeでシリアライズできる | E-20 (type/value.rb:65-67) | ○ |
| C-102 | changed?で変更検出できる | E-20 (type/value.rb:84-86) | ○ |

## 4) 不足情報（Unknown / Missing）
- 根拠なしの項目はありません。全テストケースはソースコードに基づいて生成されています。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードの実装に基づいている
- 補足: テストケースは主要な正常系・異常系・境界値をカバーしているが、以下の観点で追加テストを検討可能：
  - I18n関連の詳細なテスト（多言語対応）
  - スレッドセーフティに関するテスト
  - パフォーマンス関連のテスト

## 6) レビュアーチェックリスト（最小）
- [ ] Validationsモジュールのテストケース（UT-AMO-001〜013）が正常系・異常系を網羅しているか確認
- [ ] Errorsクラスのテストケース（UT-AMO-014〜030）が主要APIをカバーしているか確認
- [ ] SecurePasswordのテストケース（UT-AMO-065〜072）がセキュリティ要件を満たしているか確認
- [ ] Dirtyモジュールのテストケース（UT-AMO-048〜059）が変更追跡の全パターンをカバーしているか確認
- [ ] 各Validatorのテストケースが境界値テストを含んでいるか確認
- [ ] テストケースの優先度（高/中/低）が適切に設定されているか確認
