代码如下
## 在模板中
-if @course.lessons.last + 3.hours > Time.now
p = @course.lessons.last.created_at
- else
@course.lessons.each do |l|
....
上面有三次对@course所关联的 lessons 进行访问,第1/2次是对 lessons.last, 我看手册上手说 1.7 SQL Caching
Query caching is a Rails feature that caches the result set returned by each query. If Rails encounters the same query again for that request, it will use the cached result set as opposed to running the query against the database again.
在一个 action 中如果有多次相同的 SQL 查询那么只会实际查询一次,但是我看我这个例子每次都进行了查询! 请问是什么原因,如果优化?感谢
补充:
##多次调用
@course.lessons
@course.lessons
@course.lessons
##上面的三处调用只会执行一次
##但是这样会执行三次
@course.lessons.last
@course.lessons.last
@course.lessons.last