0

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

if current_user
    transaction
end

current_user 的 if 语句可能多达 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

但是,似乎没有任何变化:(它没有加速。为什么?

4

1 回答 1

1

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

session[:user] = @user

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

在您的 application_controller 中引用用户的会话

def current_user
    session[:user]
end

您可以进行其他检查以确保用户已登录或存在,等等...

希望这会有所帮助,您的问题还不是很清楚。

于 2013-07-20T03:52:39.577 回答