Вопрос

ИЗМЕНИТЬ из 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..., за которым следует тот же блок
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top