2016-05-10 8 views
3

質問は複雑ではないかもしれませんが、私は混乱しています。私は2人のユーザー、すなわち生徒と教師を持っています。私は別々のモデル、コントローラー、ビューが必要です。私は先生に/t/sign_upを、学生には/s/sign_upを使って欲しいです。私は認証のためにdeviseを使用していますが、これはアクティブな管理者の仕組みなので、可能です。複数のモデルにdeviseを使用する

答えて

2

すでに工夫して複数のモデルとビューを生成し、ちょうどパス名を変更したいきた提供、あなたはその設定のconfig/routes.rbを操作を行うことができます。このようなあなたのルートを置き換えます

devise_for :students, path: 's' 
devise_for :teachers, path: 't' 

http://localhost:3000/s/sign_up 
http://localhost:3000/t/sign_up 

あなたが異なるモデルに基づいて自分の意見を持っているしたい場合は、config.scoped_views = trueconfig/initializers/devise.rb内のファイルを設定し、そのモデルのビューを生成することができます

rails g devise:views students

そして、あなたは、各コントローラをカスタマイズしたい場合、あなたはこのような彼らのコントローラーファイルを生成することができます

rails generate devise:controllers students

これは、このようにあなたがそれらを定義することができ、モデル名に基づいてコントローラを作成します。あなたのルート:

devise_for :students, path: 's', controllers: { sessions: "students/sessions" }

+0

お返事ありがとうございます。私はこれを試して、 '/ s/sign_up'は' devise/registrations#new'を参照し、 '/ t/sign_up'は' devise/registrations#new'を参照します。紛争を起こさないだろうか? '/ s /'に新しい 'student'を、'/t/'に新しい教師のインスタンスを作成する方法を知っていますか? – user464

+0

異なるコントローラの動作が必要な場合は、そのモデル専用のコントローラを作成するのは簡単です。私は答えを編集します。 – pyfl88

+0

ありがとうございます。私は、生徒と教師のための別々のコントローラー、すなわち 'controllers/student/devise'と' controllers/teacher/devise'を生成しました。今私のコントローラを使用していますが、私のビューをdevise、すなわち 'rails g devise:views student/devise'と' rails g devise:views teacher/devise'によって生成されたビューを使用していないのです。 – user464

関連する問題