Как очистить пароль при регистрации / ошибке регистрации с authlogic? - PullRequest
0 голосов
/ 30 октября 2010

Я использую Ruby 1.8.7, Rails 2.3.8 и Authlogic 2.1.6 для регистрации, входа в систему и выхода из системы. На самом деле, эти три вещи - почти все, что я сделал!

Во время регистрации, если у пользователя есть ошибки в его регистрационных данных, я хочу, чтобы поля password и password_confirmation были пустыми при перерисовке представления. Я предполагал, что можно очистить поля в UsersController следующим образом:

class UsersController < ApplicationController
 before_filter :require_no_user, :only => [:new, :create]

 def create
   @user = User.new(params[:user])
   if @user.save
     @user.save
     flash[:success] = "Registration successful!"
     redirect_back_or_default root_path
   else
     @user.password = ""
     @user.password_confirmation = ""
     @page_title = "Registration"
   end
 end
 ...

Поле password_confirmation успешно очищается этим кодом, а поле пароля - нет. Я вставил вызов отладчика сразу после «else», и, конечно же, значение @ user.password не изменяется строкой «@ user.password». Я предполагаю, что в Authlogic есть что-то, что восстанавливает значение поля после того, как я пытаюсь его очистить. (Я также пытался установить его на «ноль», с тем же результатом).

Я нашел обходной путь, я явно устанавливаю значение поля формы равным "" в представлении:

              <%= form.password_field :password, :value => "" %>

Но это не кажется мне идеальным способом справиться с этим!

1 Ответ

1 голос
/ 30 октября 2010

Вы можете делать то, что у вас уже есть или:

def create
  if @user_session.save
    ...
  else
    params[:users][:password] = ''

Лично я бы придерживался того, что у вас есть.

...