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

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