Ruby on rails 多用户类型rails应用的控制器方案

Ruby on rails 多用户类型rails应用的控制器方案,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,好的,这里有一个结构性的问题 我有一个rails应用程序,有三种不同类型的用户;查看内容的人、制作内容的人和管理员。每种类型的用户都有不同形式的内容和统计数据,例如,观众不能编辑新闻稿,但制作人或管理员可以编辑,等等 我正在尝试决定如何构造控制器。我收到的建议是在查看器控制器中有一个新闻操作,在producer控制器中有一个新闻操作,在admin控制器中有一个新闻操作,所有这些都执行登录用户类型的相应功能。我现在正在尝试这种方法,但它看起来非常混乱。这是最好的方法,还是我应该将其构造为新闻对象的

好的,这里有一个结构性的问题

我有一个rails应用程序,有三种不同类型的用户;查看内容的人、制作内容的人和管理员。每种类型的用户都有不同形式的内容和统计数据,例如,观众不能编辑新闻稿,但制作人或管理员可以编辑,等等

我正在尝试决定如何构造控制器。我收到的建议是在查看器控制器中有一个新闻操作,在producer控制器中有一个新闻操作,在admin控制器中有一个新闻操作,所有这些都执行登录用户类型的相应功能。我现在正在尝试这种方法,但它看起来非常混乱。这是最好的方法,还是我应该将其构造为新闻对象的控制器、这类数据的控制器等等,并根据会话将用户引导到每个控制器中的适当行为


我对此感到非常困惑,因为我目前的方法(控制器每用户类型方法)似乎已经失控。非常感谢您的建议。

完全取决于您的情况。如果只是在上的新闻类型取决于用户类型,则在新闻模型中使用作用域(或lambda作用域)来检索正确的新闻。它也可能是用户模型的一部分,因此has_-many关系知道要检索哪些类型的项


如果前端功能不同,那么您需要渲染不同的部分,或者完全分离它们,或者使用类似于单元格的内容来拥有特定类型的组件,或者…

我目前正在从事一个项目,在该项目中,我为不同类型的用户使用不同的控制器(类似于您的方法)我有“管理员/新闻控制者”、“制作人/新闻控制者”和“观众/新闻控制者”。公共控制器(控制器/查看器中的控制器)只有
显示
索引
操作,并且
管理员/news\u控制器
继承自“公共”添加
新建、创建、编辑、更新等
和身份验证。但是,这种体系结构是由需求决定的,可能不是您的最佳解决方案

另一种方法是使用Ryan Bates提供的CanCan gem,设置一个新闻控制器,设计具有三个角色“管理员”、“制作人”和“观众”的用户模型,并管理
新闻
资源的权限。你可以在这里找到它:。Ryan还有一个关于CanCan的Railcast:

希望能有帮助