【问题标题】:Rails - Caching all the users with a specific attribute valueRails - 使用特定属性值缓存所有用户
【发布时间】:2020-02-14 02:35:28
【问题描述】:

在 Rails 6 应用程序中,我有一个页面显示所有管理员用户。 由于列表很少更改,我想缓存片段。

如何处理这样的缓存?

我想使它无效我应该在用户模型中使用某种after_save 回调来检查保存的用户是刚刚成为管理员还是不再是管理员。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails caching


    【解决方案1】:

    无需回调。您可以设置缓存密钥,因此每次有新管理员时,密钥都会更改并生成新的缓存。例如:

    <% cache "admin-list-#{@admins.count}" do %>
      <% @admins.each do |admin| %>
        <%= admin.name %>
      <% end %>
    <% end %>
    

    如果管理员信息发生变化而管理员用户数量不变,您可以使用集合缓存:

    https://guides.rubyonrails.org/caching_with_rails.html#collection-caching

    <%= render partial: 'users/admin', collection: @admins, cached: true %>
    

    要在开发中测试缓存,请使用以下命令: rails dev:cache

    【讨论】:

    • 感谢您的回复。管理员数量不变的情况如何。 IE。在添加 Bob 的同时将 Tony 从管理员中删除?
    • 我认为这种情况下更好的方法是集合缓存,我会更新我的答案
    • 集合缓存似乎正是我想要的。谢谢。
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多