我需要在模型代码中获取当前的登录用户名,但是我不想添加需要许多更改的新附加参数。因此,我在考虑将登录用户名放在Thread.current中,然后在模型代码中访问它是否可行。 只需尝试一下即可使用,但是例如,我担心它是否可以与独角兽多工一起正常使用 -登录请求由工作程序1处理,而第二个请求则由工作程序2处理。我的基本理解是应该没问题,因为我将会话从会话设置为ApplicationController中的Thread.current,然后才应在开始执行过滤器每个请求。 -如果独角兽工作者因任何原因被杀并重新启动,请求是否将重新启动,并且仍然具有会话数据? 我对独角兽没有足够的了解...所以这可能是一个幼稚的问题...
还有其他可能使用Thread.current的问题?
在此先感谢您的帮助!
答案 0 :(得分:1)
您不必直接使用线程,可以使用https://github.com/steveklabnik/request_store这个宝石
您的用户模型代码如下所示:
def self.current_user
RequestStore.store[:current_user]
end
def self.current_user=(logged_in_user)
RequestStore.store[:current_user] = logged_in_user
end
在控制器中,登录后,您可以设置User.current_user = current_user