テーブルに含まれる一部のデータを更新しようとすると、移行に関する問題が発生します。Rails:attr_accessibleを使用すると、移行中のデータを更新する方法は?
当社の基本モデルは次のようになります。
ユーザー
- ユーザ名
- パスワード
- ...
私たちはモデルに列を追加する最初の移行を作成し、既存の行を更新してください:
add_column :users, :deleted, :boolean
User.all.each do |user|
user.deleted = false
user.save
end
二移行がlast_name列を作成し、FIRST_NAMEにユーザー名列の名前を変更することになっている:
rename_column :users, :username, :first_name
add_column :users, :last_name, :string
二移行は数日最初の1(後に作成されたため、それは開発中の任意の問題もなく働いていました誰もが最初の井戸を2番目の井戸の前に適用するのに十分な時間があった)。
我々は以下のモデルにステージング/生産でそれらの移行にそれを展開しようとすると、我々が持っている問題は次のとおりです。
class User < ActiveRecord::Base
attr_accessible :first_name,
:last_name,
:password,
:password_confirmation,
...
...
end
FIRST_NAMEとLAST_NAMEがまだものの存在しないため、最初の移行がセーブに失敗します彼らはattr_accessibleに存在しています。
検証をバイパスしようとしても問題は解決しません。
このような問題がありましたか?SQLを書き込まずに完全なルビコードに固執したいので、この問題を回避できましたか?
この例ではこれを行うことができます。しかし、単純な例です。デフォルト値の背後にあるロジックが複雑で、ハードコードされたデフォルト値を設定することはできません.Railsは作業自体を行わなければなりません。 –
デフォルト値はすべての新しいレコードで常に同じです。それ以外の場合は、デフォルトではありません。より複雑な状況では、純粋なSQLを使用します。 –