Внешние ключи с ActiveRecord направляющих:: Миграция?

Я плохо знаком с Ruby on Rails (я знаю Ruby просто прилично, хотя) и рассмотрение инструментов Migration, это звучит действительно потрясающим. Схемы базы данных могут наконец (легко) войти в управление исходным кодом.

Теперь моя проблема с ним. При использовании Пост-ГРЭС в качестве базы данных это не устанавливает внешние ключи. Я хотел бы преимущества внешних ключей в моей схеме, такие как ссылочная целостность. Таким образом, как я применяю внешние ключи с Миграциями?

14
задан Earlz 3 April 2010 в 22:54
поделиться

3 ответа

Философия Rails заключается в том, что проверки целостности - это бизнес-логика, которая принадлежит модели. Вот почему вы видите то, что видите в БД; Any_id - это просто int, а не "настоящий" fk в поле зрения. Это не ошибка, это сделано по дизайну и поначалу немного странно. Как правило, единственная причина, по которой люди работают с fks на уровне БД, - это когда к БД обращается более одного приложения или унаследованная система. Здесь много дискуссий и несколько замечательных ссылок: Почему при миграции Rails внешние ключи определяются в приложении, но не в базе данных?

13
ответ дан 1 December 2019 в 12:51
поделиться

Для Rails существует ряд плагинов (поищите в Google), которые будут создавать внешние ключи для вас, когда вы используете специальный символ в миграциях (foreign_key_migrations - один из них из книги Advanced Rails Recipes). Только имейте в виду, что Rails не очень хорошо относится к этой концепции, особенно когда вы пытаетесь удалить объекты (как упомянул glebm).

1
ответ дан 1 December 2019 в 12:51
поделиться

Проверьте это: http://github.com/matthuhiggins/foreigner

Но сначала убедитесь, что они вам действительно нужны (например, ссылочная целостность - это то, что теоретически не должен ломаться, пока ваш код в порядке, и вы знаете о : independent =>: destroy и разнице между user.delete и user.destroy ]).

7
ответ дан 1 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: