如何在没有命中数据库的情况下在设计中使用current_user

时间:2012-05-16 12:45:47

标签: ruby-on-rails devise

我对How to customize Devise to store more informations in the session?

有同样的问题

当我使用current_useruser_signed_in?设计帮助程序时,两者都会导致SQL查询命中数据库。有没有更好的方法在会话中检索这些信息而不打数据库?

是否有必要在用户登录阶段后自行分配会话?

2 个答案:

答案 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