具有不同仪表板的多个设计用户

时间:2014-05-09 10:43:42

标签: ruby-on-rails ruby ruby-on-rails-3 postgresql devise

我有两种类型的用户,并为他们生成设计模型和视图。不得不这样做,因为在这里使用角色是不可能的。两个用户都不同,并且将具有不同的仪表板。还必须将数据存储在不同的表中,因为这些数据将被进一步处理。我成功地为他们两个创造了不同的路线,但现在我计划前进,我想遵循一个明确的结构,以后不会引起问题。我采用多态方式关联模型,并将它们命名为用户A和用户B.

用户A

将能够发布查询

将能够为B

付款

将能够保留和删除作业

用户B

只能回答问题

将在完成工作时收到付款

将能够查看工作

*注意 - 这些只是我必须完成的许多功能中的一部分。

我已经调查了其他问题,但我没有得到具体答案。期待那些可能已达到相同或处于类似情况的人的建议。提前谢谢。

2 个答案:

答案 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教程。