设计 OmniauthsController 未被使用

Devise OmniauthsController not being used

我正在尝试使用 Devise 和 Omniauth 选项创建一个 Rails 应用程序以进行用户管理。我试图让一个 OAuth 服务同时工作,从 Github 开始。欢迎页面加载,我单击使用 Github 登录,转到 Github 授权页面并允许,然后重定向开始,我收到错误消息 The action 'github' could not be found for Devise::OmniauthCallbacksController.

我不明白为什么会出现这个错误b/c我已经在 app/controllers/users/omniauth_callbacks_controller.rb 中定义了如下操作:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

  def github
    @user = User.from_omniauth(request.env["omniauth.auth"])
    sign_in_and_redirect @user
  end

end

app/models/user.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,     :omniauthable, :confirmable, :lockable, :omniauth_providers => [:github]

end

和app/config/routes.rb

Rails.application.routes.draw do
  get 'welcome/index'
  root 'welcome#index'

  devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
end

它试图回退到默认的 Devise OmniauthsCallbacksController 而不是使用我的 users/omniauths_callbacks_controller.rb,但我不知道为什么。有什么建议吗?

可能相关的信息:

ruby v 2.4.0
rails v 50.0.1
omniauth v 1.3.2
devise v 4.2.0
omniauth-github v 1.1.2

尝试替换

devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }