前提
Rails7で複数モデルでdeviseを使ったユーザー機能を実装しています。
ユーザーテーブルはそれぞれ別の親テーブルに紐づいているのですが、新規登録画面には親テーブルのidをパラメータに渡したく、ログインの時には親要素のidは必要ありません。
実現したいこと
deviseのルーティングのカスタマイズ方法を教えていただきたいです。
テーブル構成
admin_groups |
---|
name |
admin |
---|
password |
admin_group_id |
member_groups |
---|
name |
member |
---|
password |
member_group_id |
ユーザー登録・ログインフロー
既に親テーブルのidを持つ登録済みのユーザーが、ユーザー招待画面で招待したい人のメールアドレスを入力し、送信する。メールにはログインユーザーのadmin_group_idが自動で入り、
/admin_groups/:admin_group_id/admin_users/sign_up/
のリンクが添付される。
メールを受け取った人はリンクから必要情報を記入して登録、admin_group_idはパラメータから取得して登録される。
ログインは、admin_user/sign_in/から行う。
memberグループも同じ
試したこと
下記のように親テーブルをpathに指定してsign_upに関しては期待通りのURLになっていますが、そのほかも全て同じになってしまいます。deviseのcontrollerごとにURLを分岐させたいのですが...。
routes.rb
1 devise_for :admin_users, 2 path: "/admin_groups/:admin_group_id/admin_users/", 3 controller: 'admin_users/registrations'
new_merchant_manager_registration GET /merchants/:merchant_id/merchant_managers/sign_up(.:format) devise/registrations#new new_merchant_manager_session GET /merchants/:merchant_id/merchant_managers/sign_in(.:format) devise/sessions#new merchant_manager_session POST /merchants/:merchant_id/merchant_managers/sign_in(.:format) devise/sessions#create destroy_merchant_manager_session DELETE /merchants/:merchant_id/merchant_managers/sign_out(.:format) devise/sessions#destroy
補足情報(FW/ツールのバージョンなど)
Ruby3.1.2
Ruby on Rails 7.0.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。