RailsCasts #001 caching with instance variables【用實(shí)例變量緩存】

RailsCasts中的視頻講的內(nèi)容總結(jié)成文章,每個視頻對應(yīng)一片文章,希望可以幫助到那些想要學(xué)習(xí)RailsCasts 但又被英文阻礙的同學(xué)。


使用實(shí)例變量來緩存數(shù)據(jù)

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

程序中定義current_user這樣一個方法,用于獲取當(dāng)前登錄用戶,而當(dāng)在一次請求中需要調(diào)用幾次current_user方法時,對應(yīng)的也會在數(shù)據(jù)庫中查詢幾次。使用實(shí)例變量緩存查詢結(jié)果則可以解決這個問題。

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

a ||= b, 當(dāng) 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

其實(shí)并非如此,這里有一篇blog討論了這個問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,823評論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,872評論 11 349
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 《裕語言》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 28,796評論 5 20
  • 作為家裝過程中的隱蔽工程,電線電纜的產(chǎn)品質(zhì)量不容忽視!使用劣質(zhì)的電線或錯誤的家裝電線規(guī)格,導(dǎo)致的后果將難以估量。目...
    朝陽電纜閱讀 755評論 0 1

友情鏈接更多精彩內(nèi)容