我应该使用Rails 4.2中的add_foreign_key吗?

7
通过发布rails 4.2版本,引入了add_foreign_key方法。据我所知,它与model:referencesadd_index迁移结合使用。
假设我只使用PostreSQL。(add_foreign_key仅限于MySQL和PostgreSQL)是否应该停止使用migration model:referencesadd_index,转而仅使用add_foreign_key?如果是或不是,为什么?新的add_foreign_key方法有哪些好处?值得交换吗?

这不仅仅是将 model:referenceadd_index 结合起来。它涉及向数据库添加外键约束。以前没有这样的选项,除非使用原始 SQL 或其他附加 gem(如 foreiner)。 - bronislav
但是效果(即连接两个相关模型)是一样的,对吧?(我对数据库知识很少)。外键约束与具有ID和索引的整数列有何不同? - Filip Bartuzi
你可以使用 add_foreign_key 方法,也可以在生成迁移时使用 model:referencemodel_id:integer:index 参数。如果没有这些参数,你将无法连接两个模型。 - bronislav
1个回答

4

外键约束可以帮助维护参照完整性(例如,您无法插入属于不存在的书籍的数据)。外键还提供了数据库级别的参照完整性,而不是应用程序级别(模型验证)的完整性。

Rails团队认为这非常重要,因此当您在生成迁移时使用引用时,它们现在会自动创建外键。


1
据我所知,Rails默认不会创建外键约束。请参见:http://api.rubyonrails.org/v5.2.0/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_reference - fkoessler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接