2011-08-25 82 views
0

我试图了解一些基本原则,当谈到Rails方式和MVC设计模式时。基本MVC - 从另一个控制器编辑模型内容

假设我正在构建一个CMS。我有以下几点:

/Pages 
controller 
model 
view 

当一个请求通过,它应该基于Pages控制器的URL检查结果,和现在的网页。

现在,让我们说我有这样的后端,简单地说,一个管理部分:

Admin 
controller - index, edit actions 
view 

现在,管理部分认证通过Users模型,所以它不应该有自己的模型(至少我目前没有看到这种需求)。用户应该能够编辑去往/来自Pages模型的内容。这是否需要明确说明?是我在控制器级渲染的东西,还是应该使用AJAX调用控制器?我很难掌握这个过程如何运作。

除了能够编辑Pages之外,编辑类似Blog模型的问题也会遇到类似的问题,所以想要了解如何实现这一点将非常棒。

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

回答

0

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

对于您想拥有只读和相同内容的可编辑视图的CMS,我想我只是简单地使用is_admin?控制器操作中的条件,如新建,创建,编辑,更新,销毁。普通用户只能访问索引和显示。

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

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

+0

感谢您的洞察力。我想我对这个概念有所了解,但是我不确定的一件事情就像is_admin一样?条件 - 由用户模型确定,否?其他控制器如何访问该模型?它有魔力吗? :) – userrrrr

相关问题