簡體   English   中英

帶有布爾值的布爾值在true中的不同路線

[英]different routes when boolean is true in rails with devise

這是我的routes.rb

Devel::Application.routes.draw do
  authenticated :user do
    root :to => 'home#index', as: :authenticated_user
  end
  root :to => 'welcome#index'
  devise_for :users, :controllers => {:registrations => "registrations"}
  resources :users
end

我的用戶表有一列:admin => true/false 當標志為true時,如何檢查並root :to其他控制器。

我唯一知道的是我可以使用if current_user.admin?在視圖中處理它if current_user.admin?

有什么建議或想法嗎?

最好的問候丹妮

我有一個類似的設置,用監護人寫了我自己的...

在您的application_controller.rb中編寫類似

def authorize_admin
redirect_to root_url, alert: 'Access Denied' if current_user.admin == false
end

或您為admin / user擁有的任何名稱,只要它是用戶的布爾值即可。

然后在您的pages_controller.rb中,然后根據需要擴大范圍,如果您想拒絕所有訪問權限,只需執行

before_action :authorize_admin

否則將其嵌套在您喜歡的任何定義下...

def action
authorize_admin
blah blah blah
end

在確定用戶是管理員之后,您可以簡單地將用戶重定向到home#index操作內部的管理頁面。 但是,請確保該頁面受到訪問限制,以防萬一有人手動進入該頁面或意外重定向到該頁面。

我認為根本不適合在routes文件中有條件地更改主頁。

另外,我相信在應用程序啟動后,僅會加載一次routes.rb文件,因此我不確定任何條件邏輯都不會有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM