Я хочу добавить новое поле в таблицу.
Мое новое поле «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
Проблема в том, что эта миграция заполняет всех существующих пользователей одним и тем же секретным кодом!
Одним из решений было бы НЕ использовать update_all и запускать цикл для получения каждого пользователя и отправки обновления каждому из них, но в этом случае моя миграция будет чрезвычайно медленной.
Есть ли способ отправить «уникальное» случайное значение методу update_all?
Спасибо, Аугусто