每次迁移后,外键都会在架构文件中删除

时间:2019-06-24 15:26:54

标签: ruby-on-rails rails-migrations

我有这个AchRelationship模型:

class AchRelationship < ApplicationRecord
  belongs_to :account
end

还有一个Account模型:

class Account < ApplicationRecord
  has_one :ach_relationship, dependent: :destroy
end

在我的schema.rb文件中,我看到了这一行,这对我来说很有意义:

add_foreign_key "ach_relationships", "accounts"

但是,我遇到的问题是,每当我运行rake db:migrate添加新迁移时,我的schema.rb文件中的这一行就会被删除。即使没有新的迁移,它也会发生。这发生在我们团队中的某些成员上,但并非我们所有人都如此。与其他成员一起,每当他们运行rake db:migrate时,如果该行消失了,他们将重新添加该行。所以最终发生的是,我们不断看到该行被删除并重新添加到我们的PR中,而没人能弄清楚原因。

所以我的问题是,在建立数据库时,我和其他一些团队成员做了一些奇怪的事情吗?我们该怎么做才能解决此问题并防止其再次发生?感谢您的阅读!

1 个答案:

答案 0 :(得分:2)

看看here

  

Active Record还将更新您的db/schema.rb文件以匹配数据库的最新结构。

这意味着您团队中的某人在该表ach_relationships中具有不同的数据库属性。您可以要求该人通过迁移或通过GUI工具手动添加forign_key。实际上,当有人在某些分支中进行某些迁移并在分支测试后忘记回滚时,就会一直发生这种情况。