代码之家  ›  专栏  ›  技术社区  ›  Toby Hede

Ruby对象ID警告和活动记录

  •  9
  • Toby Hede  · 技术社区  · 15 年前

    在运行规范时,我们会看到如下警告:

    对象标识将被弃用;请使用对象标识

    有问题的代码正在访问ActiveRecord模型的ID(显然,这是表中的一个属性,而不是RubyVM中的对象实例ID)。

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

    5 回复  |  直到 11 年前
        1
  •  6
  •   ucron    15 年前

    我假设你在做模仿/存根(因为你提到了规格)。

    在我的例子中,当我截取一个ActiveRecord对象并访问其ID属性时,会遇到这些警告。

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

     mock("MyActiveRecordObject", :id => 1001)
    
        2
  •  15
  •   Ryan Bigg Andrés Bonilla    15 年前

    试用使用 [:id] 而不是 .id

        3
  •  10
  •   Sarah Mei    15 年前

    当一个物体从 ActiveRecord::Base 一个电话 id 去AR::B的 身份证件 方法,而不是 Object .

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

        4
  •  4
  •   womble    15 年前

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

        5
  •  2
  •   epochwolf    15 年前

    对象id警告仅在常规Ruby类(如nilclass)上发生。ActiveRecord::Base重写对象ID