1

私は次のモデルを持っています:

User
Athlete < User
Coach < User

私のルートには、次のものがあります。

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "registrations" }

sign_up各パス (例: /sign_up/coach、/sign_up/athlete)のルートを作成したいのですが、 2 つの異なる登録コントローラーを作成する必要がありますか、または 1 つの登録コントローラーでこれを行う方法はありますか?

4

2 に答える 2

1

次のようなことを行う単一の登録コントローラーを使用できます。

class UsersController < Devise::RegistrationsController

  private

    def resource_class
      params[:type].present? ? params[:type].classify.constantize : super
    end

end

あなたがする必要があるいくつかの他のtweeksがあります。それが価値があるかどうかは、モデルが実際にどれだけ似ているかにかかっていると思います.

それが役に立てば幸い!

于 2013-06-06T15:21:24.557 に答える
0

コーチとアスリート用に別々のコントローラーを作成するとよいでしょう:

devise_for :coach, :controllers => { :registrations => "coach_registrations" }
devise_for :athlete, :controllers => { :registrations => "athlete_registrations" }

class CoachRegistrationsController < Devise::RegistrationsController

end

class AthleteRegistrationsController < Devise::RegistrationsController

end

ありがとう。

于 2013-06-06T15:13:06.923 に答える