0

これは私の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/falseroot :toフラグが true の場合、別のコントローラーを確認するにはどうすればよいですか。

私が知っている唯一のことは、ビューでそれを処理できることif current_user.admin?です。

提案やアイデアはありますか?

宜しくお願いします。

4

2 に答える 2

1

私は同様の設定をしており、ワーデンで自分自身を書きました...

あなたのapplication_controller.rbに次のように書いてください

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

または、ユーザーのブール値である限り、管理者/ユーザーに付けた名前は何でも。

次に、pages_controller.rb で、必要に応じてスコープアウトします。すべてのアクセスを拒否する場合は、

before_action :authorize_admin

それ以外の場合は、好きな定義の下にネストします...

def action
authorize_admin
blah blah blah
end
于 2016-04-12T22:19:52.647 に答える
0

home#indexユーザーが管理者であることを確認した後、アクション内の管理ページにユーザーをリダイレクトするだけです。ただし、誰かが手動でそこにアクセスしたり、誤ってリダイレクトされたりした場合に備えて、そのページがアクセス制限されていることを確認してください.

ルートファイルで条件付きでホームページを変更するのは適切ではないと思います。

また、アプリケーションの起動時にファイルが一度だけ読み込まれると信じているroutes.rbため、条件付きロジックが有効かどうかはわかりません。

于 2013-08-13T17:29:24.000 に答える