为什么这不会变得更快?

时间:2013-07-20 02:16:41

标签: ruby-on-rails ruby-on-rails-3

我在所有控制器和视图中到处都有。

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

然而,似乎没有变化:(它没有加速。为什么?

1 个答案:

答案 0 :(得分:1)

当您获得当前用户信息时将其放入会话而不是从数据库中提取它听起来就像您正在做的那样,如果我误解了这个问题,请纠正我。因此,在知道用户之后:

session[:user] = @user

如果您的会话在您的数据库中,这是可以的,因为用户信息不会以cookie的形式发送到浏览器,否则您只需将用户对象ID放在cookie中,或者可能是user_id或email字段,但是意味着每次需要应用程序中的整个用户对象时,您必须通过user_id或电子邮件检索用户,更多SQL ...

在application_controller中引用用户的会话

def current_user
    session[:user]
end

您可以进行其他检查以确保用户已登录或出现等...

希望这有帮助,你的问题不太清楚。