嗨,我目前有一个帮助程序方法可以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