我试图has one
在 RoR 中建立关系。协议有一个联系人。在协议表中有一个名为 的列contact_id
。
当我尝试像这样调用绿化的联系人时:(<%= agreement.contact.name %>
联系人表有一列name
)我收到错误Unknown column 'contacts.agreement_id'
应该在哪里寻找agreement.contact_id
有什么建议么?
我试图has one
在 RoR 中建立关系。协议有一个联系人。在协议表中有一个名为 的列contact_id
。
当我尝试像这样调用绿化的联系人时:(<%= agreement.contact.name %>
联系人表有一列name
)我收到错误Unknown column 'contacts.agreement_id'
应该在哪里寻找agreement.contact_id
有什么建议么?
迈克尔的回答是对的;外键必须始终位于“属于”另一个模型的模型的表中。
但是,对您来说最好的答案可能是颠倒关系:也就是说,您确定协议不属于一个联系人,而不是一个联系人?如果切换关系,rails 将正确地知道在协议表中查找外键,而不是在联系表中查找。
has_one
本 Rails 指南对和之间的选择进行了更深入的讨论belongs_to
。
您的contacts
表需要添加外键迁移,即您需要创建一个agreement_id
整数列。确保你这样做rake db:migrate
,这应该工作。
请记住,FK 位于关系的“belongs_to”表一侧。所以,协议has_one
联系和联系belongs_to
协议。