RailsCasts #001 caching with instance variables【用实例变量缓存】

RailsCasts中的视频讲的内容总结成文章,每个视频对应一片文章,希望可以帮助到那些想要学习RailsCasts 但又被英文阻碍的同学。


使用实例变量来缓存数据

class ApplicationController < ActionController::Base
  def current_user
    User.find(session[:user_id])
  end
end

程序中定义current_user这样一个方法,用于获取当前登录用户,而当在一次请求中需要调用几次current_user方法时,对应的也会在数据库中查询几次。使用实例变量缓存查询结果则可以解决这个问题。

@current_user ||= User.find(session[:user_id])

a ||= b, 当 a 没有定义或者值为nil、false时,a赋值为b, 否则不赋值。

完整的程序如下

class ApplicationController < ActionController::Base
  def current_user
    @current_user ||= User.find(session[:user_id])
  end
end

ps:
很多讲Ruby的书或者文章中都介绍

a ||= b

等价于

a = a || b

其实并非如此,这里有一篇blog讨论了这个问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容