Datamapper не может обновить маркер пароля

У меня есть userмодель

class User
  include Datamapper::Resource

  property :id, Serial
  property :password_token, String

  def generate_token
   self.password_token = SecureRandom.hex
    self.save
   end
end

и этот маршрут контроллера:

post '/users/token_sent' do
 user = User.first(email: params[:email])
   if user
     user.generate_token 
   end
 redirect('index')
end

Я хотел быpassword_token, чтобы свойство было изменено на SecureRandom.hexэкземпляр, когда пользователь заполняет электронное письмо, чтобы восстановить свой пароль от почтового маршрута.

Метод не обновляет password_tokenбазу данных пользователей.

1 ответ

  1. В этом методе:

       def generate_token
         self.password_token = SecureRandom.hex
         self.save
       end
    

    Вы звонитеself.save, что не гарантирует успеха.

    Если вы хотите знать, почему это не удается сохранить, используйте save!вместо этого.