私はレールプロジェクトで2つの支店で作業していて、各プロジェクトには列を追加するための移行があります。当時、rake db:migrate:reset
は問題を引き起こしました。私は自分のschema.rb
に頼って、自分のデータベースの状態を正しく表していました。ある時点で、ブランチAのカラムがブランチBのスキーマに追加されたという問題が発生しました。migrate:reset
はオプションではなかったので、私は手動でスキーマファイルを編集することにしました。私はこの変更をコミットしました。これは基本的に、支店Bのschema.rbで必要としなかった支店Aの支柱を削除しました。レールでschema.rbを手作業で編集することは安全だと考えられますか
ブランチAをマスターにマージした後に問題が発生しました。私はブランチBをマスタにリベースしようとしましたが、スキーマファイルの中でカラムを削除するためにコミットしました。 Gitはこれとの衝突を見ておらず、自動マージしました。私のrebaseの終わりに、私はスキーマが私がマスターに持っているものと矛盾していることがわかりました。
私の修正は、スキーマファイルを再度編集し、以前に削除した列を手動でスキーマファイルに追加することです。私の質問です:これは慣習的ではないですか?危険な?ハッキー?
今は1つの列が含まれていますが、これに複数の列の削除/追加が含まれていると、(危険な)解決策により多くの問題やdb/schema.rbの不一致が発生する可能性があります。
合意。 「rake db:migrate version = xxx」のユーティリティを使いこなし、予約を解除してschema.rbを手動で編集することで、将来の頭痛を引き起こす可能性があります。 – railsdog