1

私はデバイスをセットアップしました。新しいユーザーが自分で登録プロセスを実行しているときにうまく機能しますが、デバイスを実装する前は、管理者はユーザーを作成することができ、それに関連する動作は古いユーザーコントローラーにありました。古いフォームにアクセスしたときにdeviseを使用しているので、新しいアクションは正常にトリガーされますが、実際にフォームを送信すると、何をしても、Deviseの登録コントローラーの作成アクションに移動します。コントローラーをオーバーライドして、古いユーザーコントローラーにあったコードをそこにコピーできることは知っていますが、特定の呼び出しでこの動作を防ぐ方法があるかどうか疑問に思っていましたか?

フォームのコントローラーとアクションを具体的に指定しようとしましたが、何もしませんでした。

私のルートで定義されている2つの関連するパスは次のとおりです。

                                         POST   /users(.:format)                                                           users#create
                       user_registration POST   /users(.:format)                                                           users/registrations#create

私はこれについて間違っていますか?

4

1 に答える 1

1

通常、devise を使用している場合は、ユーザーに関連する管理 CRUD 用に別のコントローラーを作成します。何かのようなもの:

# /app/controllers/admin
class Admin::UsersController < ApplicationController
  # your controller actions
end

# config/routes
namespace :admin do
  resources :users
end

すべてを分離することで、保守が容易になり、頭痛が軽減されることがわかりました。

更新: Devise は独自のルートとルート ヘルパーを追加するため、user_registration_path と POST /users は、devise で指定されたルート (この場合は /users への POST) に置き換えられます。これらのルートのソースは github で見つけることができます: https://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb

補足: 質問で参照した 2 つのパスは同じものです。2 番目のパスのみがルート ヘルパー、つまり user_registration_path または user_registration_url を介してアクセスでき、もう 1 つは直接参照されます。

于 2012-07-19T02:50:23.913 に答える