我在所有控制器和视图中到处都有。
if current_user
transaction
end
如果使用current_user声明,则可能高达100。
所以我在下面将这个添加到application_controller然后我用current_user
替换了所有@current_user
before_filter :current_user_set
def current_user_set
if current_user
@current_user = current_user
end
end
然而,似乎没有变化:(它没有加速。为什么?
答案 0 :(得分:1)
当您获得当前用户信息时将其放入会话而不是从数据库中提取它听起来就像您正在做的那样,如果我误解了这个问题,请纠正我。因此,在知道用户之后:
session[:user] = @user
如果您的会话在您的数据库中,这是可以的,因为用户信息不会以cookie的形式发送到浏览器,否则您只需将用户对象ID放在cookie中,或者可能是user_id或email字段,但是意味着每次需要应用程序中的整个用户对象时,您必须通过user_id或电子邮件检索用户,更多SQL ...
在application_controller中引用用户的会话
def current_user
session[:user]
end
您可以进行其他检查以确保用户已登录或出现等...
希望这有帮助,你的问题不太清楚。