私はRails初心者です。スキルを向上させるために小さなRails4プロジェクトに取り組んでいます。大まかにフォローしています M.Hartlのチュートリアル 。
チュートリアルに従って、カスタムユーザー認証が構築されます。ただし、ユーザー認証にはDeviseを使用したいと思います。チュートリアルのように、ユーザーコントローラーが必要ですか?すでにDeviseを使用している場合、Usersコントローラーを使用する/使用しないのはどの場合ですか?
チュートリアルに関しては、コントローラー生成パーツをスキップするだけですか、それともアクションをDeviseにマップする必要がありますか?
通常のサインアップ/更新プロセスとは別にユーザーを管理する場合にのみ、ユーザーコントローラーが必要です。管理者が通常のデバイスのサインアップ/更新プロセスとは関係なくユーザーを管理(作成、編集、更新、削除)できるように、ユーザーコントローラーがあります。
Deviseとの競合は、おそらく、ルートファイルにdeviseを設定するための_devise_for :users …
_があり、UsersController用に_resources :users
_があるためです。これは、deviseとUsersControllerが同じ_/users
_ルートのいくつかを共有しようとすることを意味します。それらの1つがマップされているパスを変更して、それらを分離する必要があります。たとえば、_:path => 'u'
_ステートメントに_devise_for
_を追加して、デバイスルートが_/u
_にマップされ、_/users
_のUsersControllerと競合しないようにすることができます。または、_devise_for
_をそのままにして(したがって、まだ_/users
_を使用)、代わりにUsersControllerのルーティングを_resources :users_admin, :controller => 'users'
_に変更して、UsersControllersルートを_/users_admin
_。これにより、パスヘルパーがたとえば_users_path
_から_users_admin_path
_に変更されることに注意してください。
[〜#〜]更新[〜#〜]
コメント/編集に続いて、チュートリアルをざっと見てきました。deviseは基本的に、セクション5.4からセクション9.1または9.2までに開発されたユーザー関連機能と同等の機能を提供すると思います。 (プラス電子メールの確認、パスワードのリセット、アカウントのロックアウトなどのいくつかの余分なもの)。ただし、Deviseをそのチュートリアルとマージしようとする場合、それがその機能のドロップイン置換であることを意味するわけではありません。動作するように見えるものがいくつかありますが(たとえば、Deviseは_current_user
_メソッドも定義します)、ルートなどは異なり、deviseは物事をより多くのコントローラー(登録用の個別のコントローラー、サインイン/パスワードのリセット…)。 adminタイプの機能(セクション2.2、9.3、9.4のような-作成/編集/削除/リストotherユーザー)は、私が追加したものです。アプリで別のUsersControllerを使用します。 DeviseはUsersControllerを定義していませんが、上記のようにパスなしで_devise_for :users
_を実行すると、users
ルートを使用します。
したがって、より具体的には:
自分ですべてを手動で行うことで得られる余分な理解を逃すことになりますが、deviseは人気のあるエンジンなので、知っておくとよいでしょう。時間があれば、チュートリアルを完全に実行してから、もう一度工夫してください。これは、デバイスの背後で行われていることを理解するのに役立ちます。追伸:すべてをすぐに理解していなくても、デバイスのソースコードを確認することは有益な場合があります。