Один смотрит в неправильную таблицу - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь установить отношения has one в RoR.Соглашение имеет один контакт.В таблице соглашений есть столбец с именем contact_id.

. Когда я пытаюсь вызвать контакт в соглашении следующим образом: <%= agreement.contact.name %> (в таблице контактов есть столбец name) я получаю сообщение об ошибке Unknown column 'contacts.agreement_id'Где это надо искать agreement.contact_id

Есть предложения?

Ответы [ 2 ]

1 голос
/ 05 января 2012

Майкл ответ правильный;внешний ключ всегда должен быть в таблице для модели, которая «принадлежит_ другой» модели.

Однако лучший ответ для вас может заключаться в том, чтобы инвертировать отношения: то есть вы уверены, что соглашение не принадлежит контакту, вместо с одним контактом?Если вы поменяете отношение, то rails будет правильно знать, что искать внешний ключ в таблице соглашений, а не в таблице контактов.

В этом руководстве по Rails более подробно обсуждается относительновыбор между has_one и belongs_to.

0 голосов
/ 05 января 2012

Ваша таблица contacts нуждается в добавлении миграции внешнего ключа, т.е. вам нужно создать столбец agreement_id в виде целого числа.Удостоверьтесь, что вы делаете rake db:migrate, и это должно работать.

Помните, что FK находится на стороне таблицы принадлежащих отношений.Итак, соглашение has_one, контакт и контакт belongs_to соглашение.

...