【问题标题】:Rails - Two controllers or adding actions?Rails - 两个控制器或添加动作?
【发布时间】:2009-04-24 15:45:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails dry controllers


    【解决方案1】:

    我会说同时拥有两个控制器(一个公共和一个管理员)是最好的解决方案。

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

    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
    

    【讨论】:

    • 谢谢,马特。这是有道理的,我只需要验证它没有“过度”。
    【解决方案2】:

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

    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 案例,而不是重复代码。

    【讨论】:

      猜你喜欢
      • 2016-08-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2011-08-11
      相关资源
      最近更新 更多