Вопрос

Я получаю сообщение об ошибке при запуске db:setup для моего проекта Hobo с чистой базой данных.У меня есть две модели, A и B, где B расширяет A посредством наследования одной таблицы.Создание всего работает.Но если я начну с новой базы данных, rake завершится с ошибкой:

$ rake db:setup
...
rake aborted!
Table as does not exist

Вот шаги, которые я проделал, чтобы воспроизвести это.Сначала создайте приложение Hobo:

$ hobo testproject

Создайте первую модель, A:

$ ruby script/generate hobo_model_resource a name:string type:string

Настройте data.yml, сгенерируйте и выполните миграцию:

$ ruby script/generate hobo_migration

Создайте вторую модель, B:

$ruby script/generate hobo_model_resource b

Отредактируйте B модель для расширения A:

class B < A

  # --- Permissions --- #
  def create_permitted?
    acting_user.administrator?
  end

  def update_permitted?
    acting_user.administrator?
  end

  def destroy_permitted?
    acting_user.administrator?
  end

  def view_permitted?(field)
    true
  end
end

Создайте и запустите миграцию:

$ ruby script/generate hobo_migration

Вуаля.Все работает нормально.Теперь, если я удалю все таблицы и запущу db:setup, это не удается:

$ rake db:setup
...
rake aborted!
Table as does not exist

Следуя предложениям на Ruby on Rails Single Table Inheritance (STI) и проблема модульного тестирования (с PostgreSQL), я попробовал удалить test/fixtures/as.yml и test/fixtures/bs.yml, но это не помогло.

бродяга 0.9.103
рельсы 2.3.5
рейк 0.8.7
jruby 1.4.0RC1

Какие-либо предложения?

Это было полезно?

Решение

Похоже, это ошибка в Hobo:

http://groups.google.com/group/hobousers/browse_thread/thread/2160e78762791946

По словам Мэтта Джонса:

Трассировка имеет код автоматической области, пытающийся определить, является ли inherited_without_inheritable_attributes столбцом, который попадает в
БД и умирает.

Он предлагает добавить:

return unless table_exists? 

в самом начале column метод (строка 211 из hobofields/lib/hobo_fields/model_extensions.rb).

Другие советы

Я выполнил все ваши действия, и все работало нормально.Попытался ли ты rake db:schema:load?

hobo 0.9.104
rails 2.3.5
rake 0.8.6
ruby 1.8.6
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top