Внешний ключ удаляется в файле схемы после каждой миграции - PullRequest
1 голос
/ 24 июня 2019

У меня есть 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 Ответ

2 голосов
/ 24 июня 2019

Взгляните здесь

Active Record также обновит ваш файл db/schema.rb, чтобы он соответствовал современной структуре вашей базы данных.

Это означает, что кто-то в вашей команде имеет другой атрибут базы данных в этой таблице ach_relationships. Вы можете попросить этого человека добавить forign_key вручную с помощью миграции или с помощью инструмента с графическим интерфейсом. На самом деле это происходит постоянно, когда кто-то выполнял какую-то миграцию в некоторых ветвях и забывал откатиться после проверки ветвей.

...