如何使用Ruby Sinatra在会话中存储用户id

如何使用Ruby Sinatra在会话中存储用户id,ruby,web,sinatra,Ruby,Web,Sinatra,这是我的UserService类,一旦我的路由得到singup请求,它将调用UserService.singup来执行注册逻辑。我想在会话中保存用户id,但它就是不起作用 它不断向我显示“NameError-UserService:Class的未定义局部变量或方法'session'” 会话哈希仅在控制器、视图、控制器测试和视图测试中可用,在模型中不可用。会话无法存储在模型中,因为它会破坏MVC结构,但您可以使用线程而不是会话。请参阅以下链接: class UserService de

这是我的UserService类,一旦我的路由得到singup请求,它将调用UserService.singup来执行注册逻辑。我想在会话中保存用户id,但它就是不起作用

它不断向我显示“NameError-UserService:Class的未定义局部变量或方法'session'”


会话哈希仅在控制器、视图、控制器测试和视图测试中可用,在模型中不可用。

会话无法存储在模型中,因为它会破坏MVC结构,但您可以使用线程而不是会话。请参阅以下链接:

class UserService

    def self.signup(params)
        @user = User.new(params)
        if @user.save
            session[:user_id] = @user.id
            make_json(200, 0, "Signup success!", @user)
        else
            make_json(400, 0, "Signup success!")
        end
    end

end