将数据库结果缓存为全局变量



嗨,我目前有一个帮助程序方法可以Klass.all.map{|m| m.name}.现在我使用 id 从数组中获取名称,如果我添加更多,它会自动更新。

当我在视图中的循环中使用此辅助方法时,我认为每次都会进行多次查询以获取 Klass,这意味着大量额外的工作。

我想知道如何"缓存"这个数组,或者我是否应该以更好的方式执行此操作。

谢谢!

如果您在同一操作中,SQL 缓存会自动完成。您可以在此处查看更详细的说明。顺便说一句,使用 pluck 可能会更有效,就像在 Klass.pluck(:name) 中一样。这将优化您的 SQL 查询。

您的帮助程序方法应如下所示

def klass_names
  @klass_names ||= Klass.all.map{|m| m.name}
end

最新更新