当我们运行规范时,我们会一直看到类似下面的警告:

  

对象#id将被弃用;使用Object#object_id

有问题的代码是访问ActiveRecord模型的id(显然是表中的属性,而不是Ruby VM中的对象实例ID)。

是否有人知道如何关闭这些特定警告或以某种方式避免它们?

有帮助吗?

解决方案

我假设你正在做嘲弄/抄袭(因为你提到了规格)。

就我而言,当我存根ActiveRecord对象并访问其ID属性时,我会遇到这些警告。

如果您希望访问ActiveRecord对象的ID,我建议您执行以下操作:

 mock("MyActiveRecordObject", :id => 1001)

其他提示

尝试使用 [:id] 代替 .id

当一个对象来自 ActiveRecord :: Base 时,对 id 的调用将转到AR :: B的 id 方法,而不是在 Object 上弃用了一个。

这个警告通常意味着我的一个物体不是我认为的那样。

您的对象实际上不是AR对象,通常表示某些数据检索失败( Table.find_by_name('不存在的名称')将返回 nil )。如果您只想关闭可见警告,可以在配置中关闭 whiny_nils ,否则在尝试访问对象的属性之前执行 is_a?测试妥善处理失败案件。

对象#id警告只发生在像NilClass这样的常规ruby类上。 ActiveRecord :: Base会覆盖object#id

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top