2015-07-10 97 views
0

我是Ruby on Rails的新手,我试图编写一个具有四种不同用户访问级别(代表,顾问,主席,管理员)的网站。对于每一个,我想在登录时创建一组不同的视图,以便它们具有不同的功能。验证用户登录并重定向到每个访问级别的控制器的最佳方式是什么?Rails多个访问级别

回答

1

也许你想要一个叫做漫游认证的东西。 最简单的一个,就是向用户模型添加字符串字段“角色”。

关于登录时的重定向,取决于您使用的认证系统。

class ApplicationController < ActionController::Base 
    def after_sign_in_path 
    "/#{current_user.role}" 
    end 
end 

一个最简单的方法是使用Devise及其after sign in callback

而且,也许考虑的不是创造不同的控制器,但使用不同的layouts,如:

class ApplicationController < ActionController::Base 
    layout :choose_layout 

    private 

    def choose_layout 
    current_user.role.presence || 'application' 
    end 
end 

另一种方式,就是用routing constraints

但是,这当然取决于你的应用逻辑。

这似乎是最好的,为每个角色创建不同的namespaces如果你想完全不同的观点:

Rails.application.routes.draw do 
    namespace :admin do 
    end 

    namespace :advisor do 
    end 
    ... 
end 

然后你只需创建下全视角,相应的目录:管理员,代表,顾问,主席