Como faço para entrar em um usuário com devise?

Eu tenho meu aplicativo de trilhos e estou enfrentando um grande problema com o legado. Eu tenho um controlador:

class Users::SessionsController < Devise::SessionsController
  prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
  include Devise::Controllers::InternalHelpers

def new
    clean_up_passwords(build_resource)

    respond_to do |format|
      format.html { render :layout => "sessions" }
      format.mobile
    end
  end


    # POST /resource/sign_in
    def create
      resource = User.find_by_email(params[:user][:email])  
      resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
      set_flash_message :notice, :signed_in
      sign_in_and_redirect(resource_name, resource)
    end

end

O problema é que ele nunca efetua login no usuário, sempre para nesta linha

resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")

Eu até coloquei toneladas de registradores nos arquivos de gemas reais para ver se eu conseguia ver alguma coisa, mas nada, e eu realmente não tenho idéia de como consertar isso. Se eu comentar esta linha, o usuário será logado, mas falhará se o email não estiver no banco de dados e funcionar com qualquer senha (o que definitivamente não é a solução correta)

Como faço para corrigir isso

ATUALIZA

isso funciona, mas parece muito hackish

# POST /resource/sign_in
def create
  resource = User.find_by_email(params[:user][:email])

  redirect_to(new_user_session_path, :notice => 'Invalid Email Address or Password. Password is case sensitive.') and return if resource.encrypted_password.blank?      
  bcrypt   = BCrypt::Password.new(resource.encrypted_password)
  password = BCrypt::Engine.hash_secret("#{params[:user][:password]}#{resource.class.pepper}", bcrypt.salt)
  valid = Devise.secure_compare(password, resource.encrypted_password)
 # resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
  if valid
    set_flash_message :notice, :signed_in
    sign_in_and_redirect(resource_name, resource)
  else
    redirect_to(new_user_session_path, :notice => 'Invalid Email Address or Password. Password is case sensitive.') and return    
  end

end

questionAnswers(8)

yourAnswerToTheQuestion