2015-07-10 92 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 

然後你只需創建下全視角,相應的目錄:管理員,代表,顧問,主席