Rails: есть ли разница между «reference: foo» и «integer: foo_id»? - PullRequest
7 голосов
/ 19 января 2011

Когда я использую references :foo в миграции, генерируемый столбец называется foo_id.Есть ли какая-то разница между references :foo и integer :foo_id?Может быть, что-то происходит под капотом, чтобы укрепить отношения на уровне базы данных?

Ответы [ 2 ]

8 голосов
/ 19 января 2011

Результат одинаков для вашего конкретного случая; ты прав. Но references допускает параметр :polymorphic => true, который автоматически создает столбец foo_type как строку в таблице.

Семантически, references лучше, если вы пытаетесь, чтобы ваши миграции лучше отражали отношения между таблицами в базе данных.

2 голосов
/ 19 января 2011

@ Ответ Майка прекрасно объясняет значение references.Однако часто лучше не связывать ваши миграции слишком близко с вашими ассоциациями AR.В частности, вы можете получить доступ ко всем видам рассылки, когда дело доходит до развертывания вашего приложения, если вы запустите свои миграции перед обновлением приложения, например, из-за контроля версий.Ничего страшного, пока тебя не укусят: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...