1. ホーム
  2. ruby-on-rails-3

[解決済み] サインアップするためのDeviseルートを削除するにはどうすればよいですか?

2022-05-10 06:09:44

質問

Rails 3アプリでDeviseを使っていますが、この場合、ユーザーは既存のユーザーによって作成される必要があり、そのユーザーがどのような権限を持つかを決定します。

このため、私は欲しい。

  • 目的 ユーザーがサインアップするためのルートを削除する .
  • への ユーザがプロフィールを編集できるようにする (メールアドレスとパスワードの変更) サインアップした

どうすればいいのですか?

現在、私は以下のように前に配置することで、このルートを効果的に削除しています。 devise_for :users :

match 'users/sign_up' => redirect('/404.html')

でも、もっといい方法があるんじゃないですか?

更新情報

Benoit Garretが言ったように、私の場合の最良の解決策は、登録ルートを一括して作成するのをやめて、実際に必要なものだけを作成することです。

そのために、私はまず rake routes そして、その出力を使って、必要なものを再作成しました。最終的にはこのようになりました。

devise_for :users, :skip => [:registrations] 
as :user do
  get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
  put 'users' => 'devise/registrations#update', :as => 'user_registration'
end

注意してください。

  • まだ :registerable の中に、私の User モデル
  • devise/registrations は、メールアドレスとパスワードの更新を処理します。
  • 他のユーザー属性(権限など)の更新は、別のコントローラで処理されます。

実際の回答

デフォルトのDeviseパスのルートを削除する;すなわち。

devise_for :users, path_names: {
  sign_up: ''
}

解決方法は?

私もやってみたのですが devise google groupのスレッド 本当にきれいな解決策を探す気が失せました。

José Valim (the Devise maintainer) の言葉を引用します。

ストレートな選択肢はないんです。パッチを提供するか または :skip => :registerable を使用して、必要なルートだけを追加します。

元の質問は.

特定のルート(deleteルート)を削除する良い方法はないでしょうか? をRailsから削除することはできますか?