这里还有一点结构性问题。
我有一个有三种不同类型用户的rails应用程序;查看内容的人,制作内容的人和管理员。将存在针对每种类型的用户以不同形式提供的内容和统计数据,例如观众不能编辑新闻帖子,但制作人或管理员可以等等。
我正在尝试决定如何构建控制器。我收到建议,在查看器控制器中有一个新闻动作,生产者控制器中的新闻动作,以及管理控制器中的新闻动作,所有这些都执行登录用户类型的相应功能。我正在尝试这种方法现在,但它似乎非常混乱。这是最好的方法,或者我应该将其构建为新闻对象的控制器,此类数据的控制器等,而是根据会话将用户引导到每个控制器中的适当行为?
我对此感到非常困惑,因为我目前的方法(每个用户类型的控制器方法)似乎失控了。非常感谢任何建议。
答案 0 :(得分:1)
我目前正在开发一个项目,我为不同类型的用户使用不同的控制器(类似于你的方法)我有'admins / news_controller','producer / news_controller'和'viewer / news_controller'。公共控制器(controllers/viewers
中的一个)只有show
和index
个动作,admins/news_controller
继承自'public'添加new, create, edit, update etc.
和身份验证。但是,这种架构是由需求决定的,可能不是最适合您的解决方案。
另一种方法是拥有一个新闻控制器,一个设计用户模型,其中包含三个角色'admin','producer'和'viewer',并使用来自Ryan Bates的CanCan gem管理news
资源的权限。你可以在这里找到它:https://github.com/ryanb/cancan。 Ryan还有关于CanCan的铁路广播:http://railscasts.com/episodes/192-authorization-with-cancan。
希望它有所帮助。
答案 1 :(得分:0)
完全取决于。如果新闻的类型取决于用户类型,则在新闻模型中使用范围(或lambda范围)来检索正确的新闻。它也可以是用户模型的一部分,因此has_many关系知道要检索的项目类型。
如果前端功能不同,那么您将需要呈现不同的部分,或者将它们完全分开,或者使用像单元格这样的类型特定组件,或者......