うまく動作するadd_columnの移行がありました。しかし、それを実行し、コンソールを起動した後、私はfirst_name列とlast_name列が完全に空であることがわかります。代わりにsave!
を使ってみましたが、同じ効果がありました。エラーは報告されていませんでした。ここでは、元のです:Rails 3.1:同じマイグレーションで追加したカラムに書き込むことができません
class UserAddFirstNameAndLastName < ActiveRecord::Migration
def change
# add column first name, last name string
add_column :users, :first_name, :string
add_column :users, :last_name, :string
User.all.each do |u|
u.first_name = 'first name'
u.last_name = 'last name'
u.save
end
end
end
私はまた、これはいくつかのクラスローディングの問題かもしれないと思ったので、私はループの前に再ロードするユーザークラスを強制的に行User
を挿入しました。サイコロはありません。
これを2つの移行に分割すると、目的の効果が達成されました。誰かがこれについて説明していますか?過去の移行で同じプロジェクトでこれをやったことを誓っています。
その他の注意事項:ユーザーエンジンの開発者は、移行を実行する前にユーザークラスのattr_accessible
に新しい列を追加しました。
muが短すぎます。何が起こっているのか、何をすべきかを説明する素晴らしい答えがありますが、これらの2つを異なる移行に分割することもおすすめします。 1つの列を作成し、別の列に作成します。これにより、表示されている問題を回避し、ロールバックのエラーを少なくします。 –