代码之家  ›  专栏  ›  技术社区  ›  Taryn East

我得到了“未定义的方法‘抽象类?’为了对象:类“按sql计数”

  •  4
  • Taryn East  · 技术社区  · 15 年前

    undefined method 'abstract_class?' for Object:Class

    my_count = ActiveRecord::Base.count_by_sql(["SELECT widgets FROM wodgets WHERE colour = ? LIMIT 1", my_favourite_colour])
    

    我刚刚从Rails2.2.2升级到2.3.4,以前也可以用。

    1 回复  |  直到 10 年前
        1
  •  6
  •   Taryn East    13 年前

    ActiveRecord的count\u by \u sql调用了一些更深层次的ActiveRecord::Base magic,它假设您是一个实际的ActiveRecord(即从AR继承的东西,而不是AR本身),因此尝试调用一个名为abstract\u class的内部方法?通常返回类名(如Order或Product)。

    你可以通过使用一个实际的AR对象(不管是哪一个)来解决这个问题,例如:

    my_count = MyWidget.count_by_sql(["SELECT widgets FROM wodgets WHERE colour = ? LIMIT 1", my_favourite_colour])