2011-07-28 17 views
4

Rails使用MVC範例。它在模型,視圖和控制器中很有趣,實際上只有控制器有'應用程序'或父控制器。實際上在rails中有一個application_helper,但它確實沒有太大的作用。有什麼要點只有一個application_controller作爲模型和實踐助手沒有父母?MVC範例。爲什麼只有application_controller?

+2

有趣的辯論發起,+1 – apneadiving

回答

4

模型有一個父親ActiveRecord :: Base ApplicationController在那裏,因爲它太常見了,看不到應用程序範圍的過濾器,您需要在Web應用程序中進行身份驗證/授權等。應用程序助手再次提供了輔助方法在整個應用程序中使用,超出了一個控制器的範圍。

+0

我認爲活動::記錄是一個比父母混合更多,雖然它從它繼承。 – s84

3

模型是內聚的,應該是MVC框架中最獨立的實體。在這種情況下,比較模型與控制器並不好。

幫手是支持視圖的東西。例如,您最終可能會在視圖內寫入一些實際的rails代碼,這些代碼可能在不同的視圖中可重用。對於這些情況,幫手將前來救援。

和控制器是必須在視圖和底層模型之間理想地說話的那些控制器。擁有所有控制器的父級,應用程序控制器來執行此操作是合乎邏輯的。

並且Rails MVC框架中的所有類都有一個父類--ActiveRecord :: Base是模型的父類,ActionController :: Base是控制器的父類。由於助手是用於視圖的,他們至少沒有明確的父級。

1

一般MVC的,而不是專門談到導軌:

通用控制器是有益的,因爲說,常用於所有控制器的通用處理,其具體的控制器之前執行。這同樣適用於模型,因爲模型可能會受益於一些通用屬性。這通常可以通過繼承來更好地完成,其中您的模型繼承了「應用程序模型」。

這就是爲什麼你看到通用控制器,但不是模型。在模型中已經有了獲取泛型行爲的手段,但控制器並不是這種情況。