Rails 3 ActiveRecord抽象对象

Adr*_*ala 17 ruby activerecord ruby-on-rails

我正在尝试实例化一个抽象AR类的对象用于测试目的.模型的定义如下:

class Basic < ActiveRecord::Base
  self.abstract_class = true

  def stuff
    raise NotImplementedError
  end
end
Run Code Online (Sandbox Code Playgroud)

当我尝试时Basic.new,我得到:

"Mysql2::Error: Table 'project_development.basics' doesn't exist"
Run Code Online (Sandbox Code Playgroud)

这是正常的行为吗?即使没有(显然不可能)持久性,抽象AR类也不打算实例化?

使用1.9.2-p136和Rails 3.0.4/Mysql2 0.2.6

编辑:

事实证明,错误是由列定义引起的,在抽象模型的情况下无法从数据库中获取.

class Basic < ActiveRecord::Base
  self.abstract_class = true
  @columns = []
end
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.

idl*_*ers 20

这是正常行为.抽象类不应该被实例化.您应该测试从抽象类继承的类,而不是抽象类本身.