【问题标题】:Double controllers when using namespace in rails?在rails中使用命名空间时使用双控制器?
【发布时间】:2011-08-08 20:02:16
【问题描述】:

我正在开发一个具有命名空间的应用程序(管理部分)。是否有不创建 2 个控制器的 DRY 解决方案?因为我需要创建一个公共用户控制器和一个管理员用户控制器来管理用户。

【问题讨论】:

  • 我对你的问题有点困惑。是否有两个控制器,一个用于查看用户的配置文件,一个用于允许管理员对其进行编辑,并且您希望将两者合并?还是您有“用户”的概念和“管理员”的概念,并且您想使用某种基于角色的模型将它们结合起来?
  • 第一个。我想要一个合并它们的解决方案。

标签: ruby-on-rails ruby namespaces


【解决方案1】:

继承用户控制器怎么样?我自己使用它(用于图像),它非常适合我:

# file: apps/controllers/images_controller.rb
class ImagesController < ApplicationController
  # image code (to show the image for example)
end

# file: apps/controllers/admin/images_controller.rb
class Admin::ImagesCOntroller < ImagesController
  # additional admin code (to delete the image for example)
end

【讨论】:

  • 我目前正在继承 Admin::BaseController。但我认为你的建议是最好的方法。
  • 糟糕发现了一个错误:ImagesController 当然有它自己的(通常的)继承
【解决方案2】:

您可以考虑使用可选的“编辑”按钮呈现页面。例如,像这样:

Name: <%= @user.name %>
<% if @user.admin? %>
 <% form_for @user do |f| %>
   Editing stuff
 <% end %>
<% end %>

这样,用户只会将其视为一个页面,但管理员会看到允许他们编辑字段的其他控件。附言确保在您的控制器中进行检查,以确保调用更新调用的是管理员。

【讨论】:

    猜你喜欢
    • 2014-05-19
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2014-10-23
    • 2012-05-19
    • 2012-07-08
    相关资源
    最近更新 更多