Rails 在 applicationcontrollers 中 include concerns 下的 module 时报错

lobb · 2023年06月16日 · 最后由 bestrub 回复于 2023年10月17日 · 217 次阅读
#orderos/app/controllers/concerns/user_session.rb
module OneTest
    module UserSession
        def self.included base
            base.class_eval do
                    helper_method :logged_in?
                    helper_method :current_user
            end
        end

        def signin_user user
            session[:user_id] = user.id
        end

        def logout_user
            session[:user_id] = nil
        end

        def logged_in? 
            !!session[:user_id]
        end

        def current_user
            if logged_in?
                @current_user ||= User.find(session[:user_id]) 
            else
                nil
            end
        end
    end
end
#orderos/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
    include OneTest::UserSession

end

错误

请问这是什么原因,名字也没错呀?

去掉 module OneTest 后 include UserSession 就能正常访问了,这是为什么不能嵌套 module 吗?

文件夹和命名空间没对上,在 concern 里边新建一个文件夹 one_test,再把这个文件放进去

Ian 回复

感谢!是的新建一个文件夹就能正常访问了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号