我是Ruby的新手,加入了一个现有的Ruby on Rails项目,试图理解数据库以重新架构它。
如果我生成一个MySql图表,我发现Rails没有使用外键,因此无法分析图表:
但Ruby明显在内部理解表关系。是否有任何脚本可以通过所有迁移.rb脚本并自动添加外键?
答案 0 :(得分:1)
声明" Rails不使用外键"根本不是真的。
ActiveRecord不要求您对关联使用外键约束。但是,在使用references
和belongs_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。