2011-12-24 56 views
3

爲什麼控制器被命名爲「users_controller.rb」並且模型未被命名爲「user_model.rb」?爲什麼模型被命名爲「user.rb」而不是「user_model.rb」?

爲什麼有「application_controller.rb」,但在視圖內的文件夾「佈局」沒有被命名爲「應用程序」?

+0

實際上,'app/views'目錄包含一個'layouts'目錄,其中包含一個'application.html.erb'文件,它是應用程序佈局。 – 2011-12-24 12:07:28

+0

爲什麼它如此重要呢?如果他們將被主題化### _ model.rb它會幫助你更好的編碼嗎? – rmagnum2002 2011-12-24 17:47:02

回答

2

當命名支持開發人員內部模型的問題時,代碼從思想中流出最佳。在構建應用程序時,我認爲找不到用戶模型(UserModel.find),我想要找到一個用戶(User.find)。另一方面,控制器是Web界面和數據存儲(和業務邏輯)之間的翻譯層,因此將它們稱爲不同的東西更有意義。

還存在命名空間的問題;如果我的模型和控制器都被命名爲User,那麼在任何特定時刻我指的是哪個用戶?在這種情況下,無論是用他們的類型來命名一切,這會遇到我上面描述的問題,或者一個「勝利」,並且被允許被引用爲「裸露」。似乎最有意義的是模型會獲勝,從而提供更好的心理映射。

裏面app/views/layoutapplication.html.erb,你可以有不同的控制器選擇其他佈局。然而,最終,這些都是Rails開發過程中的選擇,它們完全是基於開發人員認爲最有意義的文體選擇,所以對於您來說並沒有真正的「正確」答案問題,不幸的是。事實上,一些類似的決定已被重新審視。 (application_controller.rb以前只是命名爲application.rb)。

2

Ruby on Rails遵循"Convention over configuration"原則。 Rails廣泛使用特定的命名約定,同時將路由映射到控制器,自動加載和重新加載類,爲操作和許多其他功能找到適當的模板。

這個原理導致了一些限制,因爲你不能輕易破壞一些約定而不會陷入困境。但另一方面,它讓我們的生活更輕鬆,因爲我們獲得的配置較少,並且可以輕鬆地從一個Rails項目移動到另一個,因爲它們都具有相似的結構並遵循相同的約定。另外,我相信,這使得Rails核心開發變得更加容易,因爲核心團隊擁有大量關於使用Rails的項目的結構信息,而且他們不必擔心泛化。他們只是假設你遵守規則並遵守慣例。

雖然,我懷疑很多命名約定有嚴重的推理背後。我認爲在某種程度上,有人認爲如果Rails能夠處理您的控制器並將它們與其他類相區別(如果它們全部具有Controller後綴),則會更容易。在這裏,我們將所有控制器都放在app/controllers目錄中。

相關問題