Rails 3 ActiveRecord абстрактные объекты - PullRequest
17 голосов
/ 17 февраля 2011

Я пытаюсь создать экземпляр объекта абстрактного класса 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

Редактировать:

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

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

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

1 Ответ

20 голосов
/ 17 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...