0

我试图has one在 RoR 中建立关系。协议有一个联系人。在协议表中有一个名为 的列contact_id

当我尝试像这样调用绿化的联系人时:(<%= agreement.contact.name %>联系人表有一列name)我收到错误Unknown column 'contacts.agreement_id'应该在哪里寻找agreement.contact_id

有什么建议么?

4

2 回答 2

1

迈克尔的回答是对的;外键必须始终位于“属于”另一个模型的模型的表中。

但是,对您来说最好的答案可能是颠倒关系:也就是说,您确定协议不属于一个联系人,而不是一个联系人?如果切换关系,rails 将正确地知道在协议表中查找外键,而不是在联系表中查找。

has_one本 Rails 指南对和之间的选择进行了更深入的讨论belongs_to

于 2012-01-05T01:43:45.680 回答
0

您的contacts表需要添加外键迁移,即您需要创建一个agreement_id整数列。确保你这样做rake db:migrate,这应该工作。

请记住,FK 位于关系的“belongs_to”表一侧。所以,协议has_one联系和联系belongs_to协议。

于 2012-01-05T01:22:17.600 回答