【问题标题】:Fundamental MVC - Editing model content from another controller基础 MVC - 从另一个控制器编辑模型内容
【发布时间】:2011-11-03 07:58:32
【问题描述】:

我正在尝试了解有关 Rails 方式和 MVC 设计模式的一些基本原理。

假设我正在构建一个 CMS。我有以下内容:

/Pages
controller
model
view

当请求通过时,它应该根据Pages控制器中的URL检查结果,并呈现页面。

现在,假设我有一个后端,简单来说就是一个管理部分:

Admin
controller - index, edit actions
view

现在,管理部分通过Users 模型进行身份验证,因此它不应该有自己的模型(至少我目前看不到需要)。用户应该能够编辑/来自Pages 模型的内容。这是需要明确说明的吗?它是我在控制器级别呈现的东西,还是应该使用对控制器的 AJAX 调用来制作?我很难理解这个过程是如何运作的。

除了能够编辑页面之外,我在编辑博客模型之类的东西时也会遇到类似的问题,因此了解这是如何完成的会很棒。

编辑:还是我过于复杂了,因为他们使用的是相同的(扩展的)类?

【问题讨论】:

    标签: ruby-on-rails-3 model-view-controller


    【解决方案1】:

    我使用 Devise 进行用户身份验证。 github 上的 Devise wiki 有一个页面,介绍如何将简单的管理员角色添加到您的用户配置文件中。或者您可以使用 CanCan 作为完整的授权模型。无论哪种方式,都提供了用于检查用户角色的辅助方法。

    在 CMS 的情况下,您希望拥有相同内容的只读和可编辑视图,我想我会简单地使用 is_admin?控制器操作中的条件,例如新建、创建、编辑、更新、销毁。普通用户只能访问 index 和 show。

    您可以在路由中使用“admin”命名空间(查看 Rails 路由指南),然后将所有这些管理操作放入一个控制器中,在基本控制器中保留索引并显示,然后在您的管理员中使用 before_filter控制器使代码更简洁。

    视图模板也可以使用is_admin? (或类似的)辅助方法来公开某些功能/链接等。

    【讨论】:

    • 感谢您的洞察力。我想我已经掌握了这个概念,但我不确定的一件事是类似于 is_admin?条件 - 这是由用户模型确定的,不是吗?其他控制器如何访问该模型?是魔法吗? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多