我是 Ruby on Rails 的新手(不过我对 Ruby 的了解还不错),看着迁移工具,这听起来真的很棒。数据库模式最终可以(轻松地)进入源代码控制。
现在是我的问题。当使用 Postgres 作为数据库时,它不设置外键。我希望在我的模式中使用外键的好处,例如参照完整性。那么如何在迁移中应用外键呢?
最佳答案
Rails 的哲学是完整性检查是属于模型的业务逻辑。这就是为什么您在数据库中看到的内容; whatever_id 只是一个 int 而不是可见的“真实” fk。这不是一个错误,它是设计使然,一开始有点怪异。通常,促使人们在数据库级别使用 fks 的唯一原因是当数据库被多个应用程序或其遗留系统访问时。 这里有很多讨论和一些很棒的链接:Why do Rails migrations define foreign keys in the application but not in the database?
关于ruby-on-rails - Rails 的 ActiveRecord::Migration 的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572949/