当我使用current_user
和user_signed_in?
设计助手时,两者都会导致 SQL 查询访问数据库。有没有更好的方法可以在会话中检索这些信息而无需访问数据库?
用户登录阶段后是否需要自己分配会话?
当我使用current_user
和user_signed_in?
设计助手时,两者都会导致 SQL 查询访问数据库。有没有更好的方法可以在会话中检索这些信息而无需访问数据库?
用户登录阶段后是否需要自己分配会话?
如果您不希望它访问数据库,那么不要使用一个来存储您的会话。相反,将会话存储在内存中。为此,您有几个选项,例如使用Dalli gem的 memcached或使用redis-store gem的 redis 。这些不是唯一的宝石选择,但它们很受欢迎。我鼓励你去探索还有什么,看看有什么适合你的。
有时您只需要:id
用户的,在这种情况下,您可以在使用会话的应用程序控制器中编写以下方法
def current_user_id
session[:user_id] = session[:user_id] || current_user.id
end