Diseñar omniauthable rompe la autenticación Omniauth con `No se pudo encontrar una asignación válida para la ruta`

En mi proyecto, tengo dos tipos de usuarios: buscadores de empleo y gerentes de contratación. Los solicitantes de empleo no tienen un modelo, solo pueden solicitar trabajos utilizando los datos recibidos de proveedores externos mientras se autentican a través de Omniauth. La información de los gerentes de contratación se almacena en el modelo de usuario ideado. Los gerentes de contratación también deben poder iniciar sesión con la cuenta de correo electrónico de Google de su empresa. Entonces, primero construí la autenticación de los solicitantes de empleo usando Omniauth 1.0.0, Rails 3.1.3:

omniauth.rb

require 'omniauth-openid'
require 'openid/store/filesystem'
Rails.application.config.middleware.use OmniAuth::Builder do
   provider :openid, :store => OpenID::Store::Filesystem.new('./tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
   provider :facebook, "xxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  {:scope => 'email, offline_access, publish_stream', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}
   provider :twitter, "xxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
   provider :linkedin, "xxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxx"
 end

inroutes.rb:

match '/auth/:provider/callback', :to => 'sessions#authenticate_jobseeker'
match '/auth/failure', :to => 'sessions#failure'

insessions_controller.rb

def authenticate_jobseeker
  session[:jobseeker] = request.env['omniauth.auth']

  if valid_job_seeker?
    redirect_to new_job_application_path(...)
  else
    redirect_to request.env['omniauth.origin'] || root_path, alert: "Authentication failure"
  end
end

Hasta este punto, todo funcionó bien. Sin embargo, cuando comencé a implementar el inicio de sesión de Google para el modelo de usuario, y agregué: omniauthable, mi autenticación de buscador de trabajo se rompió. Estoy usando Devise 1.5.2:

user.rb

class User < ActiveRecord::Base
  #...
  devise :database_authenticatable, :registerable,
         ... :lockable, :omniauthable
  #...
end

indevise.rb:

config.omniauth :open_id, :store => OpenID::Store::Filesystem.new('./tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id', :require => 'omniauth-openid'

inroutes.rb:

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end

En este punto, la autenticación de los usuarios funcionaba, pero la de los solicitantes de empleo no. Después de buscar por un tiempo, el problema se solucionó agregando:path_prefix => "/auth" a todos los proveedores enomniauth.rb. El único problema ahora, es cuando el buscador de trabajo no permite el acceso a sus datos (es decir, presiona "No permitir" y vuelve a la aplicación), recibo el siguiente RuntimeError para cada proveedor:

Could not find a valid mapping for path "/auth/twitter/callback" 
Parameters:
{"denied"=>"mKjVfMRwRAN12ZxQ9cxCoD4rYSLJIRLnEqgiI"}

top de la traza:

devise (1.5.2) lib/devise/mapping.rb:48:in `find_by_path!'
devise (1.5.2) lib/devise/omniauth.rb:17:in `block in <top (required)>'
omniauth (1.0.0) lib/omniauth/strategy.rb:418:in `call'
omniauth (1.0.0) lib/omniauth/strategy.rb:418:in `fail!'
omniauth-oauth (1.0.0) lib/omniauth/strategies/oauth.rb:63:in `rescue in callback_phase'
omniauth-oauth (1.0.0) lib/omniauth/strategies/oauth.rb:45:in `callback_phase'
omniauth (1.0.0) lib/omniauth/strategy.rb:200:in `callback_call'
omniauth (1.0.0) lib/omniauth/strategy.rb:166:in `call!'
omniauth (1.0.0) lib/omniauth/strategy.rb:148:in `call'
omniauth (1.0.0) lib/omniauth/strategy.rb:168:in `call!'
omniauth (1.0.0) lib/omniauth/strategy.rb:148:in `call'
omniauth (1.0.0) lib/omniauth/strategy.rb:168:in `call!'
omniauth (1.0.0) lib/omniauth/strategy.rb:148:in `call'
omniauth (1.0.0) lib/omniauth/builder.rb:30:in `call'

He estado tratando de resolverlo por un tiempo ahora. Cualquier ayuda es muy apreciada. Avíseme si puedo proporcionar información adicional.

Respuestas a la pregunta(4)

Su respuesta a la pregunta