新手问题 resources 的好处?什么时候适合用 resources?

bright · 2016年01月12日 · 最后由 lionzixuanyuan 回复于 2016年01月12日 · 2349 次阅读

在我现有的项目中路由文件全部是用

get 'XXX/YYY' => "XXX#YYY"
post 'XXX/YYY' => "XXX#YYY"

很少用到 resources,但我在学习 rails 的过程中(http://guides.ruby-china.org/routing.htmlhttp://guides.ruby-china.org/getting_started.html)感觉 resources 是使用 form_for 的方便特性必不可少的,而且是正统的 rails 做法。但好像一个 resources 必须要有一个单数的 model 和一个复数的 controller,我的问题是

1、如果我在一个项目中要操作多个 model 并且部分 model 没有关联,该怎么使用 resources 呢?还是说需要自己定义一个个独立的路由都路由到同一个 controller(这就跟我之前一样了)? 2、是否要为每个 model 定义一个 resources(同时每个 model 有一个关联的 controller 专门控制这个 model)?然后再由一个上层的 controller 操作与 model 关联的那些 controller 做整个项目的控制吗? 3、resources 有啥好处呢?我现在看到的就是会自动帮我们生成七个路由,并且在使用 form_for 的时候会比较方便,感觉自己写也不麻烦还比较灵活呢

想找一些合适的别人写的 mvc 的代码学习一下,但是只找到了一些 gem 源码,帮助有限。。

先感谢大家了!

用 rails 的方式思考 resources 顾名思义就是资源,复数的资源,具体的项目中想一下什么是资源,比如 产品,评论,用户 也就是说 rails 项目是由这一个个资源组成的,而不是单个的零散的操作。

路由中 resources 生成 REST 风格的增删改查操作的路由,如果对某个资源的操作符合这些一个或者多个动作都可以用 resources

总的来说还是对项目需求的抽象

统一,代码量小。

#1 楼 @kikyous 我理解的资源就是一个 model,也是一个具体的数据表,然后在一个 controller(假设为 controllerN)中操作这个 model,但如果我有个 controller 要操作多个 model 那它是应该直接调用 model 的方法还是调用 controllerN 的方法呢?不太理解结构是怎么样的

#4 楼 @bright 不要把资源仅仅理解成 model,虽然我一开始也是这么理解的,举个简单的例子:通过 session 处理用户的登录退出操作。用户登录则 post,创建 session;用户退出则 delete,删除 session。然而你并不会为 session 创见一个 model

好处不是一套现成的 restful 路由吗? 操作多个 model 的情况,在排除设计上的问题后,我个人的选择是把逻辑抽出来做成 service object. 这个论坛里很多高手已经有很详细的介绍。

#5 楼 @lionzixuanyuan 恩有道理,我得在日常的开发中慢慢体会~抛开 resources 不谈,一般情况下是否需要为每个 model 创建一个 controller 呢?

#6 楼 @chenjau 赞!谢谢提供关键词 service object 确实找到了很多文章~先学习一下

#7 楼 @bright 不需要啊,controller 是所有请求的入口,不需要对系统外部开放的 model 可以不用 controller,例如:多对多的中间表 model;相对的,也不是每个 controller 都需要 model,刚刚说的 session 就是一个例子。具体还是看项目需求吧,多接触接触,不难理解的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号