我有两种类型的用户,并为他们生成设计模型和视图。不得不这样做,因为在这里使用角色是不可能的。两个用户都不同,并且将具有不同的仪表板。还必须将数据存储在不同的表中,因为这些数据将被进一步处理。我成功地为他们两个创造了不同的路线,但现在我计划前进,我想遵循一个明确的结构,以后不会引起问题。我采用多态方式关联模型,并将它们命名为用户A和用户B.
用户A
将能够发布查询
将能够为B
付款将能够保留和删除作业
用户B
只能回答问题
将在完成工作时收到付款
将能够查看工作
*注意 - 这些只是我必须完成的许多功能中的一部分。
我已经调查了其他问题,但我没有得到具体答案。期待那些可能已达到相同或处于类似情况的人的建议。提前谢谢。
答案 0 :(得分:1)
首先使用CanCanCan进行许可
将角色列添加到数据库中,并生成能力模型
将角色定义到您的用户模型
enum role: [:Admin, :Enduser, :Moderator]
用于不同的仪表板
制作仪表板控制器
class DashboardController < ApplicationController
def index
end
end
在你的路线中制作根仪表板
root 'dashboard#index'
在views / dashboard / index.html.erb
中 <% if current_user.role == "Admin" %>
<%= render 'admin' %>
<% elsif current_user.role == "Moderator" %>
<%= render 'moderator' %>
<% elsif current_user.role == "ClientUser" %>
<%= render 'client_user' %>
<% end %>
在views / dashboard / index.html.erb中的使文件像
_admin.html.erb
_moderator.html.erb
_client_user.html.erb
根据您的要求将不同的视图插入到不同的文件中。
答案 1 :(得分:0)
您需要使用CanCan
gem进行授权,您可以在链接后查看documentation和railscast video教程。