我是Ruby on Rails的新手(虽然我对Ruby比较了解),但是看着迁移工具,它听起来真的很棒。数据库模式最终可以(很容易)进入源代码控制。
现在我的问题是。当使用Postgres作为数据库时,它不设置外键。我希望在我的模式中使用外键的好处,比如引用完整性。那么,如何在迁移中应用外键呢?
发布于 2010-04-04 07:17:21
Rails的理念是完整性检查是属于模型的业务逻辑。这就是为什么你在数据库中看到了什么;whatever_id只是一个整数,而不是一个“真正的”fk。这不是一个错误,这是故意的,一开始有点怪异。通常,驱使人们在数据库级别使用fks的唯一原因是当数据库被多个应用程序或其遗留系统访问时。这里有很多讨论和一些很好的链接:Why do Rails migrations define foreign keys in the application but not in the database?
发布于 2010-04-04 07:05:10
看看这个:http://github.com/matthuhiggins/foreigner
但首先要确保你真的需要它们(例如,只要你的代码没有问题,理论上不应该破坏引用完整性,并且你知道:dependent => :destroy以及user.delete和user.destroy之间的区别)。
发布于 2010-04-04 10:37:44
当你在迁移中使用特殊符号时,有许多Rails插件(搜索谷歌)可以为你创建外键(foreign_key_migrations是“高级Rails处方”一书中的一个)。请注意,Rails不能很好地使用这个概念,特别是当您尝试删除对象时(正如glebm所提到的)。
https://stackoverflow.com/questions/2572949
复制相似问题