我正在遵循的教程在子目錄app/helpers
中有許多控制器和視圖使用的SessionsHelper模塊。但實例變量current_user
在第一次創建時存儲在哪裏?它存儲的對象的類是什麼?Rails助手模塊中的實例變量存儲在哪裏?
當控制器首次調用current_user
方法時,將創建current_user
實例變量。當一個視圖然後調用current_user
方法時,它是如何存在一個current_user
實例變量的?在渲染視圖期間是否將self
設置爲控制器對象?
module SessionsHelper
...
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
...
end
我想你可以按照這個鏈接 http://stackoverflow.com/questions/5575188/rails-tutorial-9-3-3-current-user – Shrikant1712
你的問題是一個很好的 - 事實上,有很多(有人會說_unnecessary_ )渲染期間的魔法。我不清楚這個過程的細節,但我記得在某處看到視圖上下文從控制器複製了很多東西,包括實例變量。我想,但我不確定,視圖上下文還委託任何它不知道的方法給控制器。這需要更徹底的研究......我想我會花一些時間瀏覽rails的源代碼,你應該這樣做:D –