テーブルに新しいフィールドを追加したいのですが。
ユーザーモデルの新しい「secret_code」フィールドは、Digest :: SHA1.hexdigest([Time.now、rand] .join)[1..12]と同じである必要があります。
私がやろうとしているのは、フィールドをテーブルに追加し、既存のユーザーに(一種の)一意の「secret_code」を追加する移行を生成することです。
class AddSecretCodeToUsers < ActiveRecord::Migration
def self.up
add_column :users, :secret_code, :string
User.update_all ["secret_code =?", Digest::SHA1.hexdigest([Time.now, rand].join)[1..12]]
end
def self.down
remove_column :users, :secret_code
end
end
問題は、この移行によって既存のすべてのユーザーに同じシークレットコードが入力されることです。
1つの解決策は、update_allを使用せず、ループを実行してすべてのユーザーをフェッチし、各ユーザーに更新を送信することですが、この場合、移行は非常に遅くなります。
「一意の」ランダムな値をupdate_allメソッドに送信する方法はありますか?
ありがとう、アウグスト