Ruby on Rails ApplicationController RESTful动作

时间:2013-12-19 23:10:29

标签: ruby-on-rails

有没有一种很好的DRY方式来重构我的控制器?我的所有控制器看起来都完全相同,只需更改型号名称,例如

class ModelnamesController < ApplicationController
   def index
      @modelnames = Modelname.find(:all)
   end

   def new
      @modelname = Modelname.new
   end
   ...
end

对于7个默认的REST动作(索引,新建,创建,更新,销毁,编辑,更新)等等,我的所有控制器都只是更改了模型名称,因此,有没有办法将该代码放在{ {1}}所以我的ModelnamesController和所有其他模型控制器只是从ApplicationController扩展而且如果我需要做一个不同的动作只是覆盖那个动作?我希望我的控制器看起来像这样:

ApplicationController

2 个答案:

答案 0 :(得分:2)

我建议您使用Inherited Resources开箱即用,并在场景后面使用像Cancan和activeAdmin这样的宝石。

答案 1 :(得分:-1)

您实际上要求ApplicationController不仅是主控制器,还要处理信息路由(应用程序级路由)。这打破了MVC模式的意图,因为每个实体都应用了模式。它将技术与业务分离(无论您正在编写应用程序),维护和可扩展性可能是应用程序生命周期中的完全噩梦。路由在RoR应用程序中的工作方式是多余的,因为路由(以及MVC的实现)适用于命名约定,旨在提供解决方案和业务之间的充分但非繁琐的耦合。

你不想要Ruby或Rails,你想要Pi微积分。