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

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

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

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

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

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

  wKioL1SePEyA0M5sAAEubAIA0JM243.jpg


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

    wKioL1SeQI_AQI6qAAGzM3Tr8kQ409.jpg

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

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

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

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

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

          

        控制器

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

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

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

            管理緩存

            管理helper模塊

            管理SESSION

相關文章
相關標籤/搜索