use*_*165 5 ruby-on-rails strong-parameters ruby-on-rails-4
在Rails 3中,params并request.parameters引用相同的对象.
通过在Rails 4中添加强参数,params现在引用ActionController::Parameters了从中创建的独特实例request.parameters.
这样做的副作用是,一旦调用params(从而创建不同的Parameters对象),调用request.format=将不会更新params.
Rails 3:
params # set @_params to request.parameters
request.format = "mobile"
params[:format]
=> "mobile"
Run Code Online (Sandbox Code Playgroud)
导轨4:
params # set @_params to Parameters.new(request.parameters)
request.format = "mobile"
params[:format]
=> nil
Run Code Online (Sandbox Code Playgroud)
这在技术上不是一个错误,因为它很容易让客户端代码查找request.format而不是params[:format]作为此信息的真实来源(并且不希望能够互换使用).
但这对我来说感觉就像一个设计回归.拥有params和request.parameters相同的"除了例外"现在给我们造成了一个错误,我希望它在未来会给许多开发者造成错误.
我做错了吗?如果是这样,为什么这不是一个问题,我应该做些什么呢?请注意,使我沿着这条路径走下去的用例与format =的文档完全一致.
情况很可能是这样,因为params哈希旨在作为应用程序的业务数据,而request.format代表 HTTP 请求响应请求。因此,您对内容所做的操作params仍然是相同的,但您可以灵活地更改请求格式,而无需更改业务数据。
将其视为关注点分离。
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |