如何根据角色确定所有设计路线的范围?

时间:2017-04-24 11:45:59

标签: ruby-on-rails devise ruby-on-rails-5

我的用户角色不同。例如,一个角色是经理,另一个角色是雇员。我能够设置不同的登录和注册,但我希望它们在登录后都有单独的路由。

class Employee < User 
class Manager < User 

员工可以访问,但不能访问经理

/stock-plan

由经理而非员工访问

/salaries

两者都可以访问

/my-salary
/my-team

如何通过设计实现这一目标?

我尝试使用经过身份验证的,但即使rake routes显示它可以访问,我似乎也会收到路由错误。

authenticated :employees do
    resources :stock_plan 
  end

2 个答案:

答案 0 :(得分:0)

您可以尝试这样做,例如员工路线。

devise_for :users, path: 'employees', path_names: { sign_in: 'login', sign_out: 'logout' }, controllers: { sessions: 'employees/sessions', passwords: 'employees/passwords', confirmations: 'employees/confirmations', registrations: 'employees/registrations', unlocks: 'employees/unlocks' }

答案 1 :(得分:0)

将此添加到您的工资控制器

before_action :correct_role

private
  def correct_role
    unless current_user.type=="Manager"?
      flash[:danger] = "You have no access"
      redirect_to root_url
    end
  end

我假设您已添加 控制器中的before_action :authenticate_user!