Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails fresh_何时应在etag中包含当前用户id_Ruby On Rails_Etag_Http Caching_Ruby On Rails 6 - Fatal编程技术网

Ruby on rails Rails fresh_何时应在etag中包含当前用户id

Ruby on rails Rails fresh_何时应在etag中包含当前用户id,ruby-on-rails,etag,http-caching,ruby-on-rails-6,Ruby On Rails,Etag,Http Caching,Ruby On Rails 6,我看到很多这样的例子: def show @article = Article.find(params[:id]) fresh_when(@article) end 但是,该页面还包含有关登录用户的信息(如顶部导航)。用户可以: 以用户身份登录 访问文章 注销 以用户B的身份登录 再次访问文章 。。。Oops用户将看到关于用户A的数据,而不是用户B的数据,因为文章没有修改 如何将当前用户id包括在哈希(etag)中?或者,是否有其他解决方案可以避免上述问题?也许您可以将当前用户id

我看到很多这样的例子:

def show
  @article = Article.find(params[:id])
  fresh_when(@article)
end
但是,该页面还包含有关登录用户的信息(如顶部导航)。用户可以:

  • 以用户身份登录
  • 访问文章
  • 注销
  • 以用户B的身份登录
  • 再次访问文章
。。。Oops用户将看到关于用户A的数据,而不是用户B的数据,因为文章没有修改


如何将当前用户id包括在哈希(etag)中?或者,是否有其他解决方案可以避免上述问题?

也许您可以将当前用户id添加到所有控制器的etag中

class ApplicationController < ActionController::Base
  etag { current_user.try :id }
end
class ApplicationController
通过这种方式,您可以解决登录用户的问题,该用户可能会获得与未登录用户不同的内容