gpt4 book ai didi

ruby-on-rails - Rails - 缓存和基于权限的 View

转载 作者:行者123 更新时间:2023-12-01 01:33:21 26 4
gpt4 key购买 nike

我使用 CanCan 检查用户权限并有条件地为我的用户显示或禁止页面内容。我想缓存我的页面,即使使用片段缓存也找不到优雅的解决方案......例如:

cache do

# much code

if can?
# little code
else
# little code

# much code

if can?
# little code
else
# little code

# much code

当然,我并不孤单,而且有一个很好的方法可以做到这一点。通常认为这里的最佳实践是什么?

非常感谢您的意见。

最佳答案

我还没有尝试过这个,但可能很快就会。我可能采用的一种方法是根据相关模型和当前用户显式分配缓存键。该片段将为每个用户单独缓存,但每个用户仅缓存一次。

尝试一些变化:

cache ["Unique fragment label", @model.cache_key, current_user.cache_key].join do
# code with and without permissioned elements
end

为确保权限更改使缓存无效,请确保此类更改触及用户模型的 updated_at 时间戳。假设权限存储在单独的模型中:
class Permission < ActiveRecord::Base  
belongs_to :user, :touch => true
end

关于ruby-on-rails - Rails - 缓存和基于权限的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3479631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com