为了简化,请假设我的架构是here(或者看下一句 - 我的实际表非常相似,因为我有两个表,我试图通过另一个外键中的主键加入)
因此,对于该示例,我们具有:具有PersonID作为主键的Persons表,以及具有PersonID作为外键的Orders表。
假设我的应用程序中已经存在没有关联的表格,我相信我会做以下事情:
has_many :orders
放在Persons模型中,将belongs_to :person
放在Order模型中我不知道下一步该做什么。我认为这是将它放在迁移文件中(并运行rake db:migrate)?
add_foreign_key :orders, :person
在我的实际表中,外键列有一个有趣的名称(与它加入的表无关) - 我认为我需要做的可能会改变但是我不确定?
最后一点,我知道有人会建议我读this。事情是我花了几个小时阅读它和其他来源,我在我试图定义的关联中有几个其他复杂因素(关联在两个表上是可选的),我也不知道如何快速判断它是否实际工作(目前我尝试在rails控制台中使用一些Arel代码来查看连接是否返回任何结果 - 我不知道存在任何更简单的方法)
我通过随机谷歌搜索遇到了这个问题,因为我正在寻找类似的东西。创建您的迁移并确保它看起来像这样:
class AddPersonToOrders < ActiveRecord::Migration[5.1]
def change
# No need for this line because you said:
# "an Orders table, with PersonID as a foreign key"
# add_reference :orders, :person
# This is what I think you are missing:
add_foreign_key :orders, :persons, column: :person_id
# If this doesn’t work, try to change the `person_id`
# column name to that funny column name you say you have.
end
end