在我的應用程序中,我將用戶的ID存儲在會話[]中。在每個控制器動作的開始,我打電話到ApplicationController中稱爲CURRENT_USER定義的方法:如何在Rails中顯示頁面之前正確驗證用戶
def current_user
@current_user ||= session[:current_user_id] &&
User.find_by_id(session[:current_user_id])
end
在我的控制器的方法的開始,我有以下幾點:
@current_user = current_user
if @current_user == nil
redirect_to :home
return
end
這顯然是重複的代碼,應該是某處的方法。我讀了for this question的答案,並嘗試將我的方法放入父類,該類的控制器類現在下降了,但看起來我現在無法從該方法重定向。
在我父類的,我有:
def verify_user
user = current_user
if user == nil
redirect_to "/"
return
end
return user
end
現在我已經改變了我的控制器方法如下:
@current_user = verify_user
這不工作,我想我知道爲什麼。首先,我不能簡單地在我的verify_user方法中調用return,因爲這顯然只會返回到控制器。重定向似乎沒有任何影響,可能是因爲format.html在重定向調用後被調用,這是原始代碼返回的原因。
那麼,我在這裏做錯了什麼,你有什麼建議要解決它?這是錯誤的方法?我的主要目標是保持整個「檢查用戶是否登錄,否則重定向」每個控制器方法的一行代碼。
這確實是工作,但我還需要檢查設備或其他類似在sguha的帖子裏。 – Steve 2012-03-22 00:18:32