テーブルに含まれる一部のデータを更新しようとすると、移行に関する問題が発生します。
基本モデルは次のようになります。
ユーザー
- ユーザー名
- パスワード
- …</li>
モデルに列を追加し、既存の行を更新する最初の移行を作成しました。
add_column :users, :deleted, :boolean
User.all.each do |user|
user.deleted = false
user.save
end
2 番目の移行では、last_name 列を作成し、username 列の名前を first_name に変更することになっています。
rename_column :users, :username, :first_name
add_column :users, :last_name, :string
2 回目の移行は最初の移行の数日後に作成されたため、開発では問題なく機能しました (そのため、全員が 2 回目の移行のかなり前に最初の移行を適用する十分な時間を確保できました)。
私たちが抱えている問題は、これらの移行をステージング/本番環境で次のモデルにデプロイしようとするときです。
class User < ActiveRecord::Base
attr_accessible :first_name,
:last_name,
:password,
:password_confirmation,
...
...
end
first_name と last_name は attr_accessible に存在しますが、まだ存在しないため、最初の移行は保存時に失敗します。
検証をバイパスしようとしても、問題は解決しません。
この種の問題が発生したことがありますか? SQL を記述せずに完全な Ruby コードに固執したいので、それを回避するのを手伝ってもらえませんか?