[英]rails devise check class of logged in model
我有多個模型,使用管理員,學生和顧問等設計
我不想使用角色,因為在這種情況下它會使事情變得復雜。
我想使用一個布局和顯示菜單等取決於類型的模型
= render "shared/#{resource.class}_menu"
有沒有像我們在after_sign_in_path_for等那樣的條件下我可以獲得登錄對象的類。
那么在這種情況下我想要為管理員,學生和顧問提供不同的區域
您可以為每個角色命名,也可以像這樣登錄
#config/routes.rb
Rails.application.routes.draw do
devise_for :admins, :controllers => { registrations: 'admins/registrations',
sessions: 'admins/sessions',
passwords: 'admins/passwords',
confirmations: 'admins/confirmations'
}
authenticate :admin do
namespace :admins do
....
root :to => 'something#index'
end
end
devise_for : students, :controllers => { registrations: 'students/registrations',
sessions: 'students/sessions',
passwords: 'students/passwords',
confirmations: 'students/confirmations'
}
authenticate :student do
namespace :students do
....
root :to => 'something#index'
end
end
現在,您可以為每個命名空間創建設計模型。
#app/controllers/admin_controller.rb
class AdminController < ApplicationController
before_filter :authenticate_admin!
end
對於Devise控制器,您可以像使用它們一樣使用它們
#app/controllers/users/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
end
對於基本的應用程序控制器,您可以像這樣使用它們。
#app/controllers/users/somethings_controller.rb
class Users::SomethingsController < UserController
...
end
我希望這能夠幫到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.