Rails и Hobo с проблемой наследования одной таблицы
-
22-09-2019 - |
Вопрос
Я получаю сообщение об ошибке при запуске 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