【发布时间】:2014-10-02 13:02:17
【问题描述】:
我正在尝试添加使用etag 来添加具有当前用户ID 的ETag:
UsersController:Class < ApplicationController
etag { current_user.id } if user_signed_in?
end
但是这会失败,因为在定义控制器类时 Devise 助手不可用:
undefined method `user_signed_in?'
如果我尝试在 before_action 中使用 etag,则未定义:
before_action do
etag { current_user.try(:id) } if user_signed_in? # undefined method `etag'
end
我也试过了:
before_action do
self.etag { current_user.id } if user_signed_in?
end
这似乎没有添加额外的etagger。
【问题讨论】:
-
为什么不用像 etag {current_user.id} if current_user
-
@user3334690
undefined local variable or method 'current_user' -
如果已定义?(current_user) 也许?或者可能除非 self.try(:current_user).nil? ...我们不使用设计,所以我不确定当前用户的范围被定义为...
-
因为如果它在 Devise 尚未初始化的范围内,它将始终为零。
标签: ruby-on-rails ruby devise http-caching