如何自动将外键添加到现有的Rails数据库?

时间:2016-03-17 12:15:15

标签: mysql ruby-on-rails activerecord

我是Ruby的新手,加入了一个现有的Ruby on Rails项目,试图理解数据库以重新架构它。

如果我生成一个MySql图表,我发现Rails没有使用外键,因此无法分析图表: enter image description here

但Ruby明显在内部理解表关系。是否有任何脚本可以通过所有迁移.rb脚本并自动添加外键?

2 个答案:

答案 0 :(得分:1)

声明" Rails不使用外键"根本不是真的。

ActiveRecord不要求您对关联使用外键约束。但是,在使用referencesbelongs_to迁移宏时,默认情况下会添加外键约束。

rails g model thing other_thing:references

因此,如果您接管一个没有或很少引用完整性的遗留项目,这是开发人员的错误 - 而不是Rails。当木匠喝醉时,不要责怪锤子。

了解何时以及如何使用索引和约束实际上非常困难,而构建自动化可能比实际上首先解决任务更复杂。

您需要实际查看架构和模型,并查看应添加外键的位置,并创建迁移以添加这些外键。

答案 1 :(得分:1)

https://github.com/jenseng/immigrant中找到的移民宝石添加到您的Gemfile中,然后

rails generate immigration AddKeys
rake db:migrate

如果您使用的是旧版本的Rails,还需要包含foreigner gem。