2011-01-14 177 views
61

愚蠢的問題,但我對Rails中的一個「資源」是什麼,有一些混淆。這個詞在任何地方都可以使用,但是我覺得它有可能被鬆散地使用。它在模型,控制器中,以及在字面上,在routes.rb中被引用。什麼是Rails中的「資源」?

它是具體的路線嗎?例如,map.resources映射了7個RESTful「資源」。所以一個資源的例子就是調用某個類的控制器的index動作?!?

這是對整個頁面/對象的檢索嗎?或者更狹隘的說是一個數據庫表?或該行被撤回?

是別的嗎?

不管怎樣,希望有人可以設置我直...

回答

80

您希望用戶能夠通過URI訪問並執行CRUD(或其某些子集)操作的任何對象都可以被視爲資源。在Rails的意義上,它是一般是一個數據庫表,它由一個模型表示,並通過一個控制器來執行。

例如,您可能有一個User資源(在您的數據庫中有一個users表)。這是通過一個User模型表示中,通過使用適當的映射到users_controllermap.resources :users(其然後產生等/users(用戶資源的集合)和/users/1(特定用戶資源)途徑。

您作用在這些資源。這些資源在撥打電話時的HTTP方法POST的資源集合(/users)創建一個新的記錄; GET獲取資源的(/users)的列表或特定用戶(/users/1PUT更新特定用戶(/users/1/),和DELETE。銷燬該用戶。URL是相同的,但結果(和控制器操作)根據HTTP動詞可能會有所不同。這個想法雖然是/users/1總是意味着「我與具有ID#1的用戶進行交互」,無論採取什麼行動。

+0

如果我有一個資源不使用數據庫模型(它使用單獨服務的API進行持久化)是否仍然有意義使用rails「resource」快捷方式還是我最好手動定義路線? – Jonah 2018-01-12 03:44:42

7

這裏有一個good article討論大多數開發商認爲如何「資源」是同義與數據庫表,參數,我想,在於映射資源將控制器映射到該數據庫表(或者使用ActiveResource映射到另一個REST URL)。

基本上,我認爲「資源」是「持久數據」。 map.resources將7個RESTful 動作映射到一組特定的持久數據。

但我還沒有深入的想過它。好問題!

3

我想他們大概的意思是在一般意義上的網絡,即Resource (Web)

任何統一資源標識符的指涉

我不認爲這有什麼用數據庫表。

3

打開你的模型文件夾,這是你有什麼資源的提示! 例如:用戶,圖片,評論...