Rails學習筆記第二篇(Rails應用的架構)

    Rails強制採用了MVC架構即應用由控制器(Controller),模型(Model),視圖(View)構成。    

    Model負責保持應用的狀態。有時候只是爲用戶的一些交互操作而產生的臨時狀態。有時,狀態是永久的,通常存於應用之外的數據庫中。一個model不只是數據,它能約束對數據的處理。例如model能強制總價低於$20的訂單不享有折扣優惠。我們可以將所有的商業規則實現與model中,以確保數據的有效性。modle身兼門衛與數據存儲兩職。

    View負責將從model處獲得的數據生成用戶界面。

    Controller負責統籌安排。Controller負責接收外部請求,與Model交互以及向用戶展現一個相應的View。

    這樣的三位一體被稱爲MVC。(圖源:摘自《Agile Web Development with Rails 4 》相關章節

  wKioL1SePEyA0M5sAAEubAIA0JM243.jpg


    在一個Rails應用中,請求首先被路由響應,路由解析後控制器中的特定方法(action)會被調用。該action可能會在請求中尋找數據,也可能會與Model交互,也可能有其他的action被調用。最終,該action準備好了要交給view的信息。

    wKioL1SeQI_AQI6qAAGzM3Tr8kQ409.jpg

請求 由路徑和方法構成(圖例中的爲post方法)。其他常用的方法有GET,PUT(貌似現在在都用PATCH了),PATCH,DELETE。根據圖例,Rails將路徑的第一部分line_items作爲控制器名,product_id作爲參數傳入。根據約定post方法與create動作(action)相關聯。綜上所述,路由(router)知道需要調用控制器LineLtemsController中的create動作(action)。

    create動作處理了用戶的請求。本例中,它發現了當前用戶的購物車(由model管理的一個對象),同時要求model查找關於product2的信息。並讓購物車將之添加進自身。

    現在購物車中有了新商品,我們可以將它展示給用戶。控制器調用了視圖的相關代碼。但在此之前,控制器仍做了一些其他一些處理以便視圖訪問購物車對象。在Rails中,想這樣的一些調用都是隱式的。(約定大於配置)通過約定將特定的視圖與給定的方法聯繫起來。

    Rails提供了 Active Record的ORM層來實現數據庫的相關操作。 這就是TP裏AR操作的源頭嘛?

    Rails通過Action Pack 組件來支持控制器 和 視圖。

          

        控制器

            控制器是Rails應用的邏輯中心,它協調用戶,視圖,模型之間的交互。但是大部分的            交互的Rails已經悄悄地都替你幹完了。(人生苦短,我用Rails ?-。-)開發人員只需集            中精力於功能代碼。

        控制器還提供了大量的輔助功能

            負責額外的內部動作的路由

            管理緩存

            管理helper模塊

            管理SESSION

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章