2013-02-20 29 views
2

我在我的rails應用程序的lib目錄中創建了一個類。該類需要訪問Devise的current_user。從庫代碼訪問設計師的current_user

我也應該指出,這個lib類是經常從模型代碼訪問的,因此不能將current_user傳遞給它。

我該如何做到這一點?

Peter。

+1

您可以將current_user對象從控制器傳遞到您需要使用的模型 – 2013-02-20 14:12:53

回答

0

你在哪裏使用你的圖書館?你是否從任何控制器方法調用它?如果是這樣,您應該將當前用戶作爲參數傳遞給您的庫類構造函數,並在那裏使用它。 current_user是一個控制器助手。它期望一個有效的身份驗證會話,因此只有在那裏和應用程序流中使用時纔有意義。無論如何,對任何背景/腳本任務使用current_user都沒有任何意義。

+0

我從控制器和模型代碼都使用此庫。因此傳遞current_user並不是真正的選擇。我可以包含哪些模塊? – spierepf 2013-02-20 14:42:57

+0

傳遞一個用戶,而不是當前用戶。 current_user在模型中不可訪問,理由如下:當前用戶的概念只在會話範圍中有意義,因此請求範圍,因此控制器範圍。該模型與它沒有任何關係。 – ChuckE 2013-02-20 17:02:32

+0

你不理解我。將current_user傳遞給庫不是一種選擇,因爲該庫需要在無法訪問current_user的模型中使用(出於很好的理由,我知道)。而且我不能將當前用戶傳遞給模型,因爲我不控制所調用方法的合約(如'查找'和'保存')。 – spierepf 2013-02-20 18:28:54