Rails是否需要数据库级约束?

时间:2010-04-07 01:46:13

标签: ruby-on-rails foreign-keys foreign-key-relationship auto-generate

我遇到与following post相同的问题。

所以我想知道,为什么Rails默认不支持生成外键? 不是必要的吗? 或者我们应该手动完成吗?

2 个答案:

答案 0 :(得分:56)

不需要数据库限制,只需要在您的汽车中佩戴安全带。你可以随心所欲地开车,一切都会很好,直到问题到来。安全带(约束)使您(数据)安全。

因此强烈建议您创建约束以在数据库级别强制执行数据完整性,因为很可能1)您将在Rails之外的某些位置与数据库进行交互2)您将犯错误导致无效数据的代​​码。

数据库约束可以做得更多,但它可以节省大量工作,特别是当您的代码可以对数据进行假设并且不需要进行大量有效性检查时。

ActiveRecord不支持开箱即用外键的原因是因为它与数据库无关,并且所有数据库系统都不普遍支持外键。

答案 1 :(得分:9)

您可以使用Foreigner插件添加外键支持。

并非所有受支持的ActiveRecord数据库都支持外键,因此Rails框架不会将其作为核心功能包含在内。


注意:上述内容不再准确,如4.2中的Rails added FK support