Devise - Confirmando depois que o usuário edita o email

Estou tentando descobrir isso há 2 dias. Estou confirmando contas de usuário com confirmações por e-mail (via Devise). Finalmente consegui todo esse trabalho, mas o ponto principal era validar que uma pessoa possui o e-mail que afirma ter. Portanto, preciso confirmar novamente sempre que o usuário alterar o email.

Para fazer isso, eu crieiregistrations_controller e sobrescrevi oupdate método. Basicamente baseado no que o Devise possui, mas verifico se preciso enviar a confirmação com base na atualizaçã

# registrations_controller.rb
def update
  self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)

  send_confirmation = false
  if params[:user][:email] != resource.email
    send_confirmation = true
  end

  if resource.update_with_password(params[resource_name])
    set_flash_message :notice, :updated if is_navigational_format?
    sign_in resource_name, resource, :bypass => true

    if send_confirmation
      resource.update_attributes(:confirmed_at => nil, :confirmation_sent_at => nil)
      resource.send_confirmation_instructions        
    end

    respond_with resource, :location => after_update_path_for(resource)
  else
    clean_up_passwords(resource)
    respond_with_navigational(resource){ render_with_scope :edit }
  end
end

Meu problema é que não tenho certeza de onde, no processo, posso mudar para onde é redirecionado. Eu tenho uma página que explica que "um email foi enviado para confirmar seu email". Mas se eu tentar colocá-lo depois desend_confirmation_instructions quando o usuário clica em "atualizar conta", é desconectado (pressionado para a tela de login) e, quando confirma a conta por e-mail, é direcionado para a página que eu queria mostra

Tenho uma estratégia personalizada do Warden com algumas opções e também escrevi o filtro anterior que a Devise coloca:

# registrations_controller.rb
def authenticate_scope!
  puts "RegistrationsController :: authenticate_scope!"
  puts "action : #{params[:action]}"

  super
end

Parece que está tentando autenticar o usuário. O log lê da seguinte maneira:

...
Redirected to http://localhost:3000/users/edit
Completed 302 Found in 3537ms
RegistrationsController :: authenticate_scope!
action : edit


Started GET "/users/edit" for 127.0.0.1 at 2011-06-08 11:42:09 -0500
  Processing by RegistrationsController#edit as HTML
  User Load (0.7ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
Completed   in 83ms
Warden::Strategies authenticate!
Warden::Strategies params: {"action"=>"new", "controller"=>"sessions"}


Started GET "/users/sign_in" for 127.0.0.1 at 2011-06-08 11:42:10 -0500
  Processing by SessionsController#new as HTML
...

Então, como / onde eu controlo para onde é redirecionado? Estou redefinindo corretamente os atributos de "confirmação"?

questionAnswers(3)

yourAnswerToTheQuestion