不在Rails控制器中实现所有REST操作是错误的吗?

时间:2009-08-15 17:28:33

标签: ruby-on-rails ruby rest scaffolding

假设我有SessionsController,它控制用户登录和退出,但我真正需要的唯一操作是(用于显示登录表单),创建(用于身份验证和登录)和销毁用于注销用户。

如果我在控制器中只有这三个动作,或者我是否必须全部实现它们以使其正确RESTful,是否有任何问题?

第二个小问题。有人说 scaffolding 很糟糕,而且应该手工编写代码,但我发现它非常有用且省时。

使用脚手架是否可以,或者是否应该避免它是邪恶的?为什么?

3 个答案:

答案 0 :(得分:10)

完全可以创建您想要支持该资源的RESTful操作。您不必定义所有7个操作。实际上,我的大多数控制器都不使用全部7个动作。

  

使用脚手架是否可以,或者是它   应该避免的邪恶以及为什么?

内置的Rails脚手架主要用于在开始时帮助起飞。出于某些原因,我个人不会将它用于日常开发。

  • 当我想使用现有的应用程序
  • 时,它会生成一个CSS和布局文件
  • 它生成所有控制器动作(就像我说我通常不想要所有这些动作)
  • 它为我几乎不想要的每个动作创建XML格式
  • 当我需要“编辑”和“新”操作
  • 时,它不会将表单放在一个部分
  • 我有时使用不同的测试库(例如Shoulda或RSpec)

然而,我是脚手架加速开发的粉丝。这就是为什么我创建了几乎所有时间都使用的nifty_scaffold generator。它没有上述问题。

答案 1 :(得分:4)

仅实施您需要的那些操作没有任何问题。在Rails 2.3中,您也可以在路线中更加明确。

map.resources:foo,:only => [:create,:destroy,:new]

答案 2 :(得分:1)

记住REST只有4个动词GET,POST, UPDATE PUT和DELETE。 Rails中的编辑和新操作是GET动词的解决方法,用于显示编辑资源的表单。索引操作是在不同资源上的GET,它与其他资源捆绑在一起,因为在应用程序开发上下文中将它放在同一个文件中更有意义。