Рельсы и Hobo с одной проблемой наследования таблиц - PullRequest
1 голос
/ 22 января 2010

Я получаю сообщение об ошибке при запуске 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

Настройте database.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 (STI) и модульного тестирования (с PostgreSQL) , я попытался удалить test/fixtures/as.yml и test/fixtures/bs.yml, но это не помогло.

hobo 0.9.103
рельсы 2.3.5
грабли 0.8.7
jruby 1.4.0RC1

Есть предложения?

Ответы [ 2 ]

1 голос
/ 23 января 2010

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

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

Согласно Мэтту Джонсу:

В трассировке есть автоматический код области действия, который пытается определить, является ли в столбце значение атрибута attribute.without_inheritable_attributes значение
БД и умирает.

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

return unless table_exists? 

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

0 голосов
/ 23 января 2010

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

hobo 0.9.104
rails 2.3.5
rake 0.8.6
ruby 1.8.6
...