当试图了解Rails方式和MVC设计模式时,我试图理解一些基本的基础知识。
假设我正在建立一个CMS。我有以下内容:
/Pages
controller
model
view
当请求出现时,它应根据Pages
控制器中的URL检查结果,并显示该页面。
现在,让我说我有一个后端,简单地说,管理部分:
Admin
controller - index, edit actions
view
现在,管理部分通过Users
模型进行身份验证,因此它不应该有自己的模型(至少我目前没有看到需要)。用户应该能够在Pages
模型中编辑内容。这是需要明确说明的吗?它是我在控制器级别渲染的东西,还是应该使用对控制器的AJAX调用?我很难掌握这个过程的确切运作方式。
除了能够编辑Pages之外,我在编辑像Blog模型这样的东西时遇到了类似的问题,因此了解如何实现这一点真是太棒了。
编辑:或者我是否过度复杂,因为他们正在使用相同的(扩展)类?
答案 0 :(得分:0)
我使用Devise进行用户身份验证。 github上的Devise wiki有一个关于如何向用户配置文件添加简单管理员角色的页面。或者您可以使用CanCan获得完整的授权模型。无论哪种方式,都提供了帮助方法来检查用户的角色。
如果您希望CMS具有相同内容的只读和可编辑视图,我想我只想使用is_admin?控制器动作中的条件,例如new,create,edit,update,destroy。普通用户只能访问索引和显示。
您可以在路由中使用“admin”命名空间(查看路由上的Rails指南),然后将所有这些管理操作放到一个控制器中,保留索引并显示在基本控制器中,然后在管理员中使用before_filter控制器使代码更清洁。
视图模板也可以使用和is_admin? (或类似的)帮助方法,以暴露某些功能/链接等。