傑克達與瑞兒絲的大小事

快速筆記整理網站開發上碰到的各種技巧和問題,免得年紀大忘光,至少還有一個地方可以查找

Tag Archives: variable

Instance 變數的快取

學 Ruby 也有一段時間了,但一直忘記「 ||= 」這個指令的使用方式,還是快速筆記一下加強記憶吧

使用意義:

根據 Rails Casts 的影片說明,一般我們在 Ruby 執行

@user = User.find(1)

當下達這樣的指令時,Ruby 就會在背後執行一段 SQL 語法取得我們指定的資料,而收到一個 request 時可能需要執行很多次的這樣的操作,相對地也就會對 database 執行同樣多次的 SQL 查詢,是還滿秏效能的,這時,我們就可以使用 OR 符號,將剛剛的指令修正如下

@user ||= User.find(1)

第一次執行時,由於 @user 是 nil,所以 Ruby 便會生成 SQL 語法向 database 取得資料,一旦當 @user 有了資料,不再是 nil 值時,下次再執行這段指令,Ruby 就不會再生成 SQL 語向 database 取資料,而是直接返回 @user 變數值,如此一來就可以大大減少效能的損秏

簡單來記,就是當變數為空值時才執行指令的操作,否則返回變數保存的內容

參考文章:

http://railscasts.com/episodes/1-caching-with-instance-variables?view=asciicast

廣告