`ActionController::Parameters#merge!` の `:call-seq` に `&block` を追記

rails/rails

ActionController::Parameters#merge! がブロック引数を受け取れるにも関わらず、RDoc の :call-seq: がそれを記載していなかった点を是正した変更です。ブロックでキー競合時の解決ロジックが利用可能であることを、ドキュメント上で明確に示します。

背景

ActionController::Parameters#merge! は内部で Hash#merge! を呼び出し、&block をそのまま転送しています。実装上はブロックが有効ですが、RDoc のメソッドシグネチャが merge!(*other_hashes) だけを示していたため、利用者がブロックを渡すことを認識しにくい状態でした。既に同クラスの deep_merge! ではブロックが :call-seq に記載されており、ドキュメントの一貫性が欠如していました。

技術的な変更

変更点は actionpack/lib/action_controller/metal/strong_parameters.rb のコメント行のみです。merge!:call-seq:, &block を追加し、シグネチャを実装と合わせました。

@@ -1072,7 +1072,7 @@ def merge(*other_hashes, &block)
     end

     ##
-    # :call-seq: merge!(*other_hashes)
+    # :call-seq: merge!(*other_hashes, &block)
     #
     # Returns the current `ActionController::Parameters` instance with `other_hashes`
     # merged into current hash.

この修正は実行時の挙動を変えず、RDoc の生成結果にだけ影響します。merge! を呼び出すコードはそのまま動作し、ブロックを渡す場合も従来通り Hash#merge! のロジックが適用されます。

設計判断

この PR は ドキュメントの正確性と一貫性 を高めることを目的としています。機能追加や挙動変更ではなく、既存実装に対する記述の見直しです。deep_merge! と同様の記法を採用することで、開発者がメソッドシグネチャを統一的に把握できるよう配慮されています。後方互換性への影響はなく、唯一の副作用は生成される API ドキュメントが更新される点です。

まとめ

merge!:call-seq&block を追記したことで、ブロック引数の受け渡しが正式にドキュメント化されました。実装上の変更はなく、既存コードへの影響はありませんが、利用者が正しくメソッドを活用できるようになる重要な改善です。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
3b54566c

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文、背景、技術的変更、設計判断、まとめが揃っており、総論→各論→結論の流れが明確です。

カスタムMarkdown構文 ⚠ WARNING

シンタックスハイライト・GitHubリンク記法の正確性

PRリンクの記法が「[PR #57864](URL)」となっており、期待される形式「[#57864](URL)」と完全には一致していません。ファイル名付きシンタックスハイライトは使用されていないため問題はありません。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

Rails 開発者向けの専門的内容で、余計な初心者向け解説はありません。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションが総論・各論・結論の構成で、段落はトピックセンテンスで始まり 1 段落 1 トピック、長さも適切です。空行で区切られています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事中の diff ブロックは提供された Diff と完全に一致し、ファイル名・変更内容も正しく反映されています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

用語は PR 内容と合致しており、誤用は見られません。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

ドキュメント修正のみで実装動作は変わらない旨の説明は PR と一致しています。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

すべての主張が PR のタイトル・説明・Diff で裏付けられており、推測や捏造はありません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR 番号 #57864 が正しく記載されています。他の数値は使用されていません。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルは PR タイトルの内容を正確に日本語化しており、一致しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

外部のバージョン情報やリリース日程等は引用しておらず、問題はありません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

時間表現は使用されておらず、PR 内容と矛盾する表現はありません。