美文网首页RailsCasts 译文
RailsCasts #001 caching with ins

RailsCasts #001 caching with ins

作者: liteng | 来源:发表于2015-07-01 21:02 被阅读0次

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

相关文章

网友评论

    本文标题:RailsCasts #001 caching with ins

    本文链接:https://www.haomeiwen.com/subject/zyxyqttx.html