2017-01-17 13 views
2

Я читал онлайн-примеры того, как создавать таблицы Rails, и я заметил, что сценарии миграции, которые я создал, содержащие ссылки, не работают из коробки. Я подумал, что, возможно, я сделал что-то не так, поэтому я попробовал сейчас сделать тестовое приложение/миграцию с источником данных SQLite3. Я выполнил следующие команды:DB migrate scripts break on ссылки

$ rails g scaffold SchoolClass name 
$ rails g scaffold Student name SchoolClass:references 

И это сделало мои сценарии миграции (наряду со всем остальным).

Migration script for dependent table with reference to Model

Я побежал сценарии миграции SQLite3 и он работал отлично.

Когда я пытался делать те же шаги, описанные выше в отношении источника данных Postgres, я продолжал получать следующее:

PG::UndefinedTable: ERROR: relation does not exist 

Единственный способом я мимо этот вопрос, если бы я пошел в сценарий миграции и обновил t.references и заменил имя класса на фактическое имя таблицы. В руководстве по перенаправлению Rails (http://guides.rubyonrails.org/v2.3/migrations.html#special-helpers) он сказал, что для хелпера ссылок вы передаете имя модели. В случае с Postgres это, похоже, не так.

Это довольно простое исправление для замены имен моделей именами таблиц, но у меня есть тонна таблиц для миграции, и каждая таблица может иметь большое количество ссылок. Кто-нибудь видел это раньше, и есть ли способ продолжить использование утилиты scaffold для миграции?

Appreciative любой полезной помощи,

  • Джо

ответ

1

Это должно быть t.references :school_class вместо :SchoolClass И правильная команда помост rails g scaffold Student name school_class:references. См. rails guides on naming conventions

 Смежные вопросы

  • Нет связанных вопросов^_^