Tag: 弃用警告

Rails 5测试的弃用警告

我正在尝试从rails 4.2.6更新到rails 5.0.0.1,但在运行我的测试时会收到以下警告: 弃用警告:ActionController :: TestCase HTTP请求方法在将来的Rails版本中只接受关键字参数。 例子: get:show,params:{id:1},session:{user_id:1} process:update,method :: post,params:{id:1}(从/ home / ubuntu / workspace / my_app /中的块调用测试/控制器/ tractions_controller_test.rb:25) 我一直在进行适当的更改以适应这种变化。 但是对于下面的集成测试行,我不知道如何正确更改它: delete api_sessions_path, { api_session: { org_id: nil } }, { “HTTP_API_TOKEN”: “token”, “HTTP_USER_EMAIL”: @user.email } 所以测试通过但是有弃用警告。 如果我将其更改为下面的两个选项,则测试将失败并出现语法错误。 如何正确调整线? delete api_sessions_path, params: { api_session: { org_id: nil } }, { “HTTP_API_TOKEN”: “token”, “HTTP_USER_EMAIL”: […]

如何在更新的Rails上通过readonly替换find?

我的项目中有这个遗留代码: Model.find(id, :readonly => false) 显然,它通过id搜索,只搜索非readonly的对象。 但readonly不是Model的属性,这应该是检查实际的ActiveRecord属性,该属性定义该实例是否是只读实例。 我不知道这个代码实际上是做什么的,也许是:readonly => false在那里没用。 但是我得到了预期的警告: DEPRECATION WARNING: Passing options to #find is deprecated. Please build a scope and then call #find on it. 我无法用where替换它,因为我无法在SQL中检查readonlyness,因为它不是SQL属性。 该错误实际上明确指出,如果在范围内,我仍然可以使用find。 但我做了一个范围,如下: scope :by_id_not_readonly, ->(id) { find(id, :readonly => false) } 但抛出相同的警告,但在模型中的范围声明行而不是控制器… 我做了一些其他测试: 将其替换为where(’id =?AND readonly = false’,id)实际上会产生错误,因为例外 – readonly不适合模型。 在没有readonly位的情况下运行代码会破坏测试,因为它返回只读记录,稍后代码会尝试更新它们,从而产生错误。 向查找散列添加不正确的选项,例如find(id,:readonly => false,:ldisfs32j9fmdf90sdfds => […]