以下是我的使用案例 -Rails - 控制器助手應該去哪裏?
我有一個控制器方法(操作),它會對Google進行API調用。我創建了一個類Google
,我已將它放在lib
文件夾中。類Google
提供了API調用方法。
def self.list_items(folder_id, access_token)
result = RestClient.get "#{API_URL}/drive/v2/files",
{
:Authorization => "Bearer #{access_token}",
:params => {:q => "'#{folder_id}' in parents and trashed=false"}
}
return JSON.parse(result)['items']
end
不過,我需要編寫從Google
調用list_items
的方法,捕捉的情況下,到期的access_token,刷新的access_token,在數據庫中保存新的和的access_token再次使list_items
調用異常。
由於此方法需要與數據庫交互,因此我不想將它放在lib
的類中。我是rails新手,並且我知道lib
文件夾應該有第三方代碼。類Google
這裏可以被認爲是第三方類,因爲它是一個PORO,與rails項目或我的業務邏輯沒有任何關係。如果這種理解錯誤,請糾正我。
我可以保持這種方法作爲控制器中的私有方法,但假設有多種這樣的方法。這不會讓控制器變胖嗎?
另外,控制器是FileApiController
,而所有這些方法都是谷歌特定的。我也有專門針對box和dropbox的方法。我希望創建GoogleHelper
,DropboxHelper
等類,它們也與db進行交互。在哪裏保持這個類?
我來自Grails背景,GoogleHelper
通常會作爲Grails中的服務,如googleService。什麼是軌道的做法。具體而言,如果我製作GoogleHelper
課程,在哪裏保留它?我猜,助手文件夾只是保留視圖助手。在控制器GoogleHelper.print_hello
:
您可以刪除list_items中的代碼,因爲我會在這裏調用'Google.list_items'。你的解決方案看起來不錯,但我認爲助手文件夾下的類主要是用於查看助手。將控制器助手保存在助手文件夾下是否是一種常見的做法? – vishesh
是的,它的良好做法,使用助手控制器和視圖。 – 7urkm3n
此外,您也可以在MODEL文件中調用Helpers'GoogleHelper.print_hello'。 – 7urkm3n