有没有一种很好的DRY方式来重构我的控制器?我的所有控制器看起来都完全相同,只需更改型号名称,例如
class ModelnamesController < ApplicationController
def index
@modelnames = Modelname.find(:all)
end
def new
@modelname = Modelname.new
end
...
end
对于7个默认的REST动作(索引,新建,创建,更新,销毁,编辑,更新)等等,我的所有控制器都只是更改了模型名称,因此,有没有办法将该代码放在{ {1}}所以我的ModelnamesController和所有其他模型控制器只是从ApplicationController
扩展而且如果我需要做一个不同的动作只是覆盖那个动作?我希望我的控制器看起来像这样:
ApplicationController
答案 0 :(得分:2)
我建议您使用Inherited Resources开箱即用,并在场景后面使用像Cancan和activeAdmin这样的宝石。
答案 1 :(得分:-1)
您实际上要求ApplicationController不仅是主控制器,还要处理信息路由(应用程序级路由)。这打破了MVC模式的意图,因为每个实体都应用了模式。它将技术与业务分离(无论您正在编写应用程序),维护和可扩展性可能是应用程序生命周期中的完全噩梦。路由在RoR应用程序中的工作方式是多余的,因为路由(以及MVC的实现)适用于命名约定,旨在提供解决方案和业务之间的充分但非繁琐的耦合。
你不想要Ruby或Rails,你想要Pi微积分。