Есть много способов достичь этого. Сначала вы должны решить, как вы хотите сгенерировать токен. Вы можете просто создать md5hash, используя некоторые данные о пользователе, такие как электронная почта, вместе с другим фрагментом исходных данных, например Time.now, и сохранить его как «perishable_token» для пользователя.
Затем можно переопределить метод доступа для считывателя для perishable_token, чтобы сгенерировать другой токен и обновить модель пользователя.
before_save :generate_perishable_token
def generate_perishable_token
self.perishable_token = Digest::MD5.hexdigest("#{Time.now}-#{self.email}")
end
def perishable_token
generate_perishable_token
save
end
Выше приведен лишь небольшой псевдокод, но он должен понять суть.