5

Rails 3 では、同じオブジェクトparamsを参照します。request.parameters

Rails 4 での強力なパラメーターの追加により、は から作成されparamsた の個別のインスタンスを参照するようになりました。ActionController::Parametersrequest.parameters

これの副作用は、一度呼び出すとparams(それによって個別のParametersオブジェクトが作成される)、呼び出しrequest.format=が更新されないことparamsです。

レール 3:

params # set @_params to request.parameters
request.format = "mobile"
params[:format]
=> "mobile"

レール 4:

params # set @_params to Parameters.new(request.parameters)
request.format = "mobile"
params[:format]
=> nil

これは技術的にはバグではありません。これは、クライアント コードがこの情報の真のソースとして参照するrequest.formatのではなく、簡単に参照できるためですparams[:format](両方を同じ意味で使用できるとは期待できません)。

しかし、それは私にはデザインの回帰のように感じます. 「例外を除いて」同じparamsrequest.parametersあることは、現在、私たちにバグを引き起こしています。将来、多くの開発者にバグを引き起こすと予想しています。

私は間違っていますか?もしそうなら、なぜこれが本当に問題にならないのですか?このパスにたどり着いたユースケースは、format= のドキュメントからの正確なものであることに注意してください。

4

1 に答える 1