Где фактически обновляется пароль пользователя в Devise :: PasswordsController? - PullRequest
0 голосов
/ 17 февраля 2020

Я совершенно новичок в рельсах Device gem. и пытаясь понять, как это работает.

В моем проекте есть Devise :: PasswordsController.

  def update
    self.resource = resource_class.reset_password_by_token(resource_params)
    yield resource if block_given?

    if resource.errors.empty?
      resource.unlock_access! if unlockable?(resource)
      if Devise.sign_in_after_reset_password
        flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
        set_flash_message!(:notice, flash_message)
        resource.after_database_authentication
        sign_in(resource_name, resource)
      else
        set_flash_message!(:notice, :updated_not_active)
      end
      respond_with resource, location: after_resetting_password_path_for(resource)
    else
      set_minimum_password_length
      respond_with resource
    end
  end

Это обновит новый пароль для базы данных.

В журнале моего сервера. Я вижу, UPDATE SQL запрос выполнен.

UPDATE `users` SET `reset_password_sent_at` = NULL, `encrypted_password` = 'somevalue......', `reset_password_token` = NULL, `updated_at` = '2020-xx-xx xx:xx:xx' WHERE `users`.`id` = xxx

но,

Почему я не могу найти код ruby, эквивалентный этому? как в resource.update вещах как это.

Извините, если мой вопрос не имеет смысла. И если так, пожалуйста, исправьте мое недоразумение.

Где найти функцию, которая выполняет SQL?

1 Ответ

1 голос
/ 17 февраля 2020

Фактическое обновление происходит в Devise :: Models :: Recoverable # reset_password , который вызывается # reset_password_by_token .

# Update password saving the record and clearing token. Returns true if
# the passwords are valid and the record was saved, false otherwise.
def reset_password(new_password, new_password_confirmation)
  if new_password.present?
    self.password = new_password
    self.password_confirmation = new_password_confirmation
    save
  else
    errors.add(:password, :blank)
    false
  end
end
...