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

时间:2009-04-24 15:45:30

标签: ruby-on-rails dry controllers

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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的更专业案例,而不是重复代码。