TypeError(类SessionsController的超类不匹配)



我通过"登录"进行授权,因此出现了这样一个错误:

于2018-08-07 10:20:55启动10.12.4.5的POST"/auth/sign_in"+0500

LoadError(无法自动加载常量覆盖:SessionsController,预期/主页/管理员/Рабочий到定义它(:

activesupport(5.1.6(lib/active_support/dependences.rb:512:inload_missing_constant' activesupport (5.1.6) lib/active_support/dependencies.rb:202:inconst_missing'activesupport(5.1.6(lib/active_support/inflector/methods.rb:284:inconst_get' activesupport (5.1.6) lib/active_support/inflector/methods.rb:284:in块处于常量'activesupport(5.1.6(lib/active_support/inflector/methods.rb:267:ineach' activesupport (5.1.6) lib/active_support/inflector/methods.rb:267:in注入主动支持(5.1.6(lib/active_support/inflector/methods.rb:267:在constantize' activesupport (5.1.6) lib/active_support/dependencies.rb:583:in中获取'activesupport(5.1.6(lib/active_support/dependences.rb:614:inconstantize' actionpack (5.1.6) lib/action_dispatch/http/request.rb:85:in控制器_类_for'actionpack(5.1.6(lib/action_dispatch/http/parameters.rb:99:inbinary_params_for?' actionpack (5.1.6) lib/action_dispatch/http/parameters.rb:90:in集合_二进制编码'actionpack(5.1.6(lib/action_dispatch/http/parameters.rb:67:in服务中的path_parameters=' actionpack (5.1.6) lib/action_dispatch/journey/router.rb:48:in块actionpack(5.1.6(lib/action_dispatch/trouter.rb:33:在each' actionpack (5.1.6) lib/action_dispatch/journey/router.rb:33:in服务中'actionpack(5.1.6(lib/action_dispatch/routing/route_set.rb:844:in调用中的call' warden (1.2.7) lib/warden/manager.rb:36:in块典狱长(1.2.7(lib/varden/manager.rb:35:incatch' warden (1.2.7) lib/warden/manager.rb:35:in调用'rack(2.0.5(lib/rack/etag.rb:25:incall' rack (2.0.5) lib/rack/conditional_get.rb:38:in呼叫机架(2.0.5(lib/rack/head.rb:12:在call' activerecord (5.1.6) lib/active_record/migration.rb:556:in中调用"actionpack"(5.1.6(lib/action_dispatch/middleware/callbacks.rb:26:inblock in call' activesupport (5.1.6) lib/active_support/callbacks.rb:97:in run_callbacks的actionpack(5.1.6(lib/action_dispatch/middleware/callbacks.rb:24:在call' actionpack (5.1.6) lib/action_dispatch/middleware/executor.rb:12:in调用中'actionpack(5.1.6(lib/action_dispatch/medleware/debug_exceptions.rb:59:在call' actionpack (5.1.6) lib/action_dispatch/middleware/show_exceptions.rb:31:in调用中'railties(5.1.6(lib/rails/rack/logger.rb:36:在调用"activesupport"的call_app' railties (5.1.6) lib/rails/rack/logger.rb:24:in块中(5.1.6(lib/active_support/tagged_logging.rb:69:block in tagged' activesupport (5.1.6) lib/active_support/tagged_logging.rb:26:in 中标记的"activesupport"lib/active_support/taged_logging.rb:69:在tagged' railties (5.1.6) lib/rails/rack/logger.rb:24:in中调用"actionpack(5.1.6("lib/action_dispatch/middleware/remote_ip.rb:79:在call' request_store (1.4.1) lib/request_store/middleware.rb:19:in中调用"actionpack"(5.1.6(lib/action_dispatch/middleware/request_id.rb:25:在call' rack (2.0.5) lib/rack/runtime.rb:22:in中调用"activesupport"(5.1.6lib/active_support/cache/strategy/local_cache_middleware.rb:27:incall' actionpack (5.1.6) lib/action_dispatch/middleware/executor.rb:12:in调用"actionpack"(5.1.6(lib/action_dispatch/middleware/static.rb:125:在call' rack (2.0.5) lib/rack/sendfile.rb:111:in中调用‘rack-cors(1.0.2(lib/rack/cors.rb:97:在call' railties (5.1.6) lib/rails/engine.rb:522:in中调用'puma(3.11.4(lib/puma/configuration.rb:225:在call' puma (3.11.4) lib/puma/server.rb:632:inhandle_request'puma(3.11.4(中lib/puma/server.rb:446:在运行'puma的process_client' puma (3.11.4) lib/puma/server.rb:306:in块中(3.11.4(lib/puma/thread_pool.rb:120:在"spawn_thread中的块"中

TypeError(类SessionsController的超类不匹配(:

app/controllers/overrides/sessions_controller.rb:1:在`'中

overrides/sessions_controller.rb:

class SessionsController < DeviseTokenAuth::ApplicationController
def resource_data(opts = {})
opts[:resource_json] || @resource.as_json
end
def render_new_error
render json: {
errors: [I18n.t("devise_token_auth.sessions.not_supported")]
}, status: 405
end
def render_create_success
render json: {
sponsor: resource_data(resource_json: @resource.userable.token_validation_response)
}
end
def render_create_error_not_confirmed
render json: {
errors: [I18n.t("devise_token_auth.sessions.not_confirmed", login: @resource.login)]
}, status: 404
end
def render_create_error_bad_credentials
render json: {
errors: [I18n.t("devise_token_auth.sessions.bad_credentials")]
}, status: 402
end
def render_destroy_success
render json: {
}, status: 200
end
def render_destroy_error
render json: {
errors: [I18n.t("devise_token_auth.sessions.user_not_found")]
}, status: 404
end

结束

application_controller.rb:

class ApplicationController < ActionController::API
include DeviseTokenAuth::Concerns::SetUserByToken
end

routes.rb:

Rails.application.routes.draw do
mount_devise_token_auth_for 'User', at: 'auth', controllers: {
sessions:  'overrides/sessions'
}
end

实际上,错误消息说明了需要做什么:

无法自动加载常量覆盖::SessionsController,预期/home/admin/Ра

Rails希望app/controllers/overrides/sessions_controller.rb定义Overrides::SessionsController,但找不到。

将控制器类定义更改为:

class Overrides::SessionsController < DeviseTokenAuth::ApplicationController
...
end

最新更新