【问题标题】:LoadError (Unable to autoload constant Api::V1::UserTokenController) Knock GemLoadError (Unable to autoload constant Api::V1::UserTokenController) Knock Gem
【发布时间】:2019-02-08 09:41:01
【问题描述】:

由于这是一个全新的应用程序,我使用的是 Rails 6 beta。

我正在尝试使用 Knock Gem,但在尝试通过发布用户获取 API 响应时出现此错误:

LoadError(无法自动加载常量 Api::V1::UserTokenController, 预期的 /Users/Simon/Sites/TGD/ginbackend/app/controllers/api/v1/user_token_controller.rb 来定义它):

但是,我在该位置确实有 user_token_controller.rb 文件。我正在为我的 API 端点使用命名空间:

Rails.application.routes.draw do

  namespace :api do
    namespace :v1 do
      post 'user_token' => 'user_token#create' # <= manually placed this under the namespace
      resources :distilleries
      resources :botanicals
      resources :gins
      resources :botanicals_gins
    end
   end
end

根据 Knock 文档,我还更新了我的 application_controller.rb,请注意这是位于 app/controllers/ 而不是 app/controllers/api/v1 这是一个问题吗?

class ApplicationController < ActionController::API
    include Knock::Authenticable

    private

    def authenticate_v1_user
      authenticate_for V1::User
    end

end

【问题讨论】:

    标签: ruby-on-rails authentication ruby-on-rails-6


    【解决方案1】:

    解决了。

    一切尽在细节中(一如既往)。

    由于knock 安装程序自动生成user_token_controller,它不知道我的路由命名空间。

    所以我改变了:

    class UserTokenController < Knock::AuthTokenController
    

    到:

    class Api::V1::UserTokenController < Knock::AuthTokenController
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-27
      相关资源
      最近更新 更多