当您运行以下命令时:
rake db:migrate
只有db/migrate/目录中的文件正在被处理,是吗?
既然在app/models/中定义了一对一、一对多和多对多等关系,那么Rails如何强制执行这些关系呢?当我进行迁移并查看生成的数据库模式时,我看不到任何外键约束。所以这让我感到困惑,不知道所有这些是如何工作的。
rake db:migrate
只有db/migrate/目录中的文件正在被处理,是吗?
既然在app/models/中定义了一对一、一对多和多对多等关系,那么Rails如何强制执行这些关系呢?当我进行迁移并查看生成的数据库模式时,我看不到任何外键约束。所以这让我感到困惑,不知道所有这些是如何工作的。
简单来说,它无法实现。
这是因为需要支持多个数据库。有些数据库,比如sqlite,不支持外键。
要添加外键,您需要执行原始SQL。
has_many
告诉 Rails 这些外键在哪里以及它们的名称是什么。数据库只知道一个表有一个名为comment_id
的字段,类型为整数。 - Alex Wayne