Поскольку это совершенно новое приложение, я использую бета-версию Rails 6.
Я пытаюсь использовать Knock Gem, но при попытке получить ответ API от публикации пользователя я получаю эту ошибку:
LoadError (Unable to autoload constant Api::V1::UserTokenController, expected /Users/Simon/Sites/TGD/ginbackend/app/controllers/api/v1/user_token_controller.rb to define it):
Однако у меня есть файл 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