Rails - 两个控制器或添加动作?

TMB*_*TMB 5 ruby-on-rails dry controllers

设计具有管理部分和面向公众的部分的Web应用程序.感觉就像有一个面向公众的控制器只是为了"索引"和"显示"有点多余.我读过的所有建议都建议使用admin的命名空间,这很好.我只是想知道我是否应该有一个带有附加动作的控制器,比如说"list_public"或类似的东西.

我是Rails的新手,所以也许我只关心什么都没有.我只是不喜欢让所有这些控制器,视图,同名的助手分散在我的项目目录中.

有人对此有任何见解吗?提前致谢.

Mat*_*nde 7

我想说让两个控制器(一个公共控制器和一个管理员)是最好的解决方案.

现在你可以做的是让两个控制器调用相同的方法来执行操作中的相关操作.

class MyController < ApplicationController
  def show
    MyModel.do_all_sorts_of_stuff
  end
end

class Admin::MyController < ApplicationController
  def show
    MyModel.do_all_sorts_of_stuff
    # Admin only stuff goes here
  end
end
Run Code Online (Sandbox Code Playgroud)


小智 6

正如马特所说,但你也可以这样做:

class MyController < ApplicationController
  def show
    MyModel.do_all_sorts_of_stuff
  end
end

class Admin::MyController < MyController
  def show
    super
    # Admin only stuff goes here
  end
end
Run Code Online (Sandbox Code Playgroud)

这意味着您可以专注于Admin :: MyController的更专业的情况,而不是重复代码.