在RubyActiveAdmin中是否可以在索引块外对redis进行批量读取?

5sxhfpxr  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(358)

我有密码在里面 index 块,如果类有x个用户,则索引块循环x次。
index 块,我调用redis读取一个值。所以,它将是对redis的x个调用。
有没有一种方法可以批量调用redis,在那里我们可以把x个用户的id作为一个数组来传递(说 GetBulkUserNames(<Array_Of_X_Users_Ids>) )如果是,怎么做?它应该放在一个方法中还是可以放在 index 阻止?
我们怎样才能在 ActiveAdmin.register 这样我们就可以把它传给 GetBulkUserNames() ?

plicqrtu

plicqrtu1#

可以在控制器中添加与集合相关的辅助对象。假设集合中的每个x都有一个用户id,那么可能是这样的吗?

controller do
  def cached_user_data
    @data ||= begin
      user_ids = collection.map(&:user_id).uniq
      Hash[user_ids.zip Redis.current.mget(user_ids)]
    end
  end
end

index do
  column :cached_user_data { |x| controller.cached_user_data[x.user_id] }
end

相关问题