你可以在这里看到我的模型:
https://gist.github.com/768947
只是为了解释正在发生的事情,我有几个模型。在我的应用程序的核心,有:项目、阶段、上传、评论、用户。然后是角色和分配来管理用户授权。
我正在使用插件 declarative_authorization & design for login 执行此操作。
所以第一个问题是,在我的用户模型/表中添加一列“角色”并将每个用户的角色存储在那里更好吗?如果我有一个具有多个角色的用户,那么我可以将所有角色存储为一个数组并根据需要循环访问它们。
还是像我现在设置它那样做更好,我使用两个单独的表和一堆连接来设置分配?我只有 4 个角色:设计师、客户、管理员、超级用户。
从计算资源的角度来看,使用列执行每个查询比使用连接“更便宜”的意义上更好,或者差异不是那么显着吗?
我想,我的问题的根源是......现在,如果我想将一个项目分配给 current_user,我只需这样做current_user.projects.each do |project|
并以这种方式循环它们。这是在我完成之后:@projects = current_user.projects
在项目控制器中。这同样适用于我的所有其他模型——除了用户和角色。
但是,如果我想找到一个角色为“客户”的用户,它会很快变得令人费解。还是我把它复杂化了?
任何帮助,将不胜感激。