5

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

我是 Rails 的新手,所以也许我什么都不关心。我只是不喜欢将所有这些具有相同名称的控制器、视图、助手分散在我的项目目录中的想法。

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

4

2 回答 2

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
于 2009-04-24T15:54:11.283 回答
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

这意味着您可以只关注 Admin::MyController 的更专业的案例,而不是重复代码。

于 2009-09-05T08:38:59.503 回答