ruby-on-rails - LoadError (Unable to autoload constant Api::V1::UserTokenController) Knock Gem
问题描述
由于这是一个全新的应用程序,我使用的是 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
解决方案
解决了。
一切都在细节中(一如既往)。
当敲门安装程序自动生成user_token_controller
时,它不知道我的路由命名空间。
所以我改变了:
class UserTokenController < Knock::AuthTokenController
至:
class Api::V1::UserTokenController < Knock::AuthTokenController
推荐阅读
- amazon-web-services - SNS SQS - 未收到从 SNS 主题推送到队列的消息
- sql - 使用 SQL 获取 XML 节点中的值
- jquery - 如何在按钮内找到元素的类名?
- django - “parcella_pk”在那里不行,它会导致“ValueError”。我应该使用什么?
- prometheus - Prometheus 查询以获取自午夜以来的指标值或动态偏移量
- unit-testing - 如何从 SOAP UI 工具中的属性传递 SOAP 请求中的输入值?
- flutter - 带有加载微调器和确认的颤振 showDialog
- visual-studio-2019 - 有没有办法隐藏视觉工作室中的所有面板(不是全屏模式)?
- python-3.x - Tkinter 中的流体设计
- android - 如何在自定义视图上使用视图绑定