我对How to customize Devise to store more informations in the session?
有同样的问题当我使用current_user
和user_signed_in?
设计帮助程序时,两者都会导致SQL查询命中数据库。有没有更好的方法在会话中检索这些信息而不打数据库?
是否有必要在用户登录阶段后自行分配会话?
答案 0 :(得分:2)
如果您不希望它访问数据库,请不要使用它来存储您的会话。而是将会话存储在内存中。您可以使用Dalli gem或使用redis-store gem的redis来为此设置一些选项,例如memcached。这些并不是唯一的宝石选择,但它们很受欢迎。我鼓励你去探索其他什么,看看哪种方式适合你。
答案 1 :(得分:2)
有时您只需要用户的:id
,在这种情况下,您可以在使用会话的应用程序控制器中编写以下方法
def current_user_id
session[:user_id] = session[:user_id] || current_user.id
end