把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讨论了这个问题。
网友评论