rake db: schema: load не удалось найти таблицу
-
27-10-2019 - |
Вопрос
ИЗМЕНИТЬ из normalocity : мой ответ не помог решить эту проблему,поэтому я назначаю вознаграждение за альтернативные решения.
Исходный вопрос:
Я начал работать над проектом Rails неделю назад, много раз меняя схему базы данных с помощью миграций.Вчера я пытался создать свою базу данных (среда разработки, конфигурация по умолчанию) с нуля, используя следующие команды:
родовое словоЯ получил это сообщение при загрузке схемы с помощью параметра --trace:
родовое словоКак новичок в Rails, я не знаю, как решить эту проблему, особенно в моем schema.rb есть команды для создания таблицы галерей.
Мой код доступен здесь: https://github.com/fabienengels/portfolio
Решение
Вам необходимо изменить свой кодовый код
родовое слово вам нужно поместить этот код в блок /app/admin/photos.rb
.Я закомментировал вашу ссылку там.Я оставлю это на ваше усмотрение, чтобы решить, как создать свою сетку / блок / что угодно.просто убедитесь, что он находится в области индекса.Удачи.
Другие советы
Итак, проблема в том, что когда ваше приложение загружается, оно загружает ваши данные activeadmin.Это, в свою очередь, приводит к запуску кода Gallery.all
, чтобы узнать, какие области нужно настроить.
Выполнение задачи с граблями, например, schema:load
, по-прежнему загружает приложение, поэтому оно все еще пытается выполнить Gallery.all
, но вы только что удалили / воссоздали базу данных, поэтому совершенно справедливо говорится, что таблицы нет.
Что бы вы хотели сделать, так это сказать ActiveAdmin, чтобы он не беспокоился о настройке, поскольку вы просто выполняете некоторые миграции.
К счастью, в этих случаях устанавливается глобальная переменная $rails_rake_task
.Я бы попытался не запускать код в вашем инициализаторе active_admin всякий раз, когда $rails_rake_task
истинно, или если это не работает, также не выполнять какую-либо конфигурацию activeadmin (например, материал в app / admin / photos), если $rails_rake_task
истинно.
Я никогда раньше не использовал ActiveAdmin, но из документации, но похоже, что вы можете ссылаться только на одну модель в блоке ActiveAdmin.register
или что вы просто не сделали модель Gallery
видимой внутри этого файла.
Итак, в app/admin/photos.rb
, где у вас есть
Я не знаю, как выполнять регистрацию вложенных кодов ActiveAdmin
, или даже если вы можете, но сообщение об ошибке, которое вы получаете, сообщает вам, что Gallery
недоступен в рамках этого файла, и, следовательно, это похоже на «Что за таблица галерей? У нас здесь нет таблицы галерей».
Итак, вы можете попробовать одну из этих двух вещей, чтобы решить эту проблему и посмотреть, что произойдет - надеюсь, это либо ответ, либо приведет вас к ответу:
- В самом верху файла
app/admin/photos.rb
добавьте эту строку:-
require '../models/gallery'
-
- Если это не сработает, попробуйте вместо сгенерировать кодовый код
-
Gallery.all.each...
, за которым следует тот же блок
-