0

worker_table と admins_table の 2 つのテーブルがあります。

2 つのコントローラーがあり、devise(sign_in、sign_up...) を使用します。

私が使う:

before_filter :authenticate_user!

ワーカーと管理者のコントローラーで。

サインインしたユーザーの電子メールがあるとします。

@email = current_user.email

@email が見つかった場所を確認したい:

  • それがworkers テーブルにある場合は、worker の index.html.erb にリダイレクトします (また、admins の index.html.erb には入ることができません)。

  • admins テーブルにある場合は、admins の index.html.erb にリダイレクトします (また、worker の index.html.erb には入れません)。

ユーザーがworkers_tableまたはadmins_tableに属しているかどうかを確認する方法を知っています。

しかし、ユーザーがどのテーブルに属しているかはどこで確認すればよいでしょうか? 別のコントローラーを定義する必要がありますか?

私を案内してください。

4

1 に答える 1

1

application_controller.rb は、authenticate_user 機能を定義するのに適した場所です。

あなたがそれを持っているなら、別の場所はsessions_controller.rbかもしれません

少なくとも、admins_controller が before_filter に追加する ensure_admin メソッドを持つことができます。それらが admine でない場合は、redirect_to workers#index が可能です。

私はレールに慣れていないので、これを行う従来の方法についてはわかりませんが、上記は私が行う方法です。

于 2012-12-29T01:58:33.463 に答える