Подтвердить что ты не робот

Рельсы 3 ActiveRecord абстрактные объекты

Я пытаюсь создать экземпляр объекта абстрактного класса AR для целей тестирования. Модель определена следующим образом:

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

  def stuff
    raise NotImplementedError
  end
end

Когда я пытаюсь Basic.new, я получаю:

"Mysql2::Error: Table 'project_development.basics' doesn't exist"

Это нормальное поведение? Разве абстрактные классы AR не предназначены для инстанцирования даже без (очевидно невозможного) настойчивости?

Использование 1.9.2-p136 с Rails 3.0.4/Mysql2 0.2.6

Edit:

Оказывается, что ошибка вызвана определениями столбцов, которые в случае абстрактной модели не могут быть получены из базы данных.

class Basic < ActiveRecord::Base
  self.abstract_class = true
  @columns = []
end

Работает как шарм.

4b9b3361

Ответ 1

Это нормальное поведение. Абстрактные классы не должны создаваться. Вы должны проверить классы, которые наследуются от абстрактного класса, а не от абстрактного класса.