ユーザ登録処理の実装
簡単なユーザ登録・ログイン機能を実装します。まずは前回の内容を思い出し、Controllerを作成、
rake routes
で確認しながらroutingを記述します。今回はユーザ登録ページ(new)とユーザ作成(create)、ログインとログアウト処理を受け付けるようにします。
login
とlogout
にするとsorceryの提供するメソッドと名前がかぶってしまうのでsigin
, signout
にしています。
collection
ブロック以下に書いたルーティングは、/users/...
直下に定義されます。対応する概念はmember
で、collection
をmember
に置き換えると「signin_user POST /users/:id/signin(.:format) users#signin
」というようなルーティングが生成されます。 Railsのルーティングは慣れるまで思ったように行かないものだと思いますが、詳しくは Rails Routing from the Outside In ? Ruby on Rails Guides などを参照してください。
ユーザ作成処理から作っていきます。/users/new
ページにフォームを作成し、submit先をusers_path
とします。すると先のルーティング定義からUsersControllerのcreateアクションに処理が流れてくるので、その中でユーザモデルを作成すると、以下のようなコードが出来上がります。
注意する必要があるのは新規ユーザ作成時にuser_params
メソッドでパラメータを加工してからUser.new
している部分で、 RailsでTwitterクローンを作る(1) -- Scaffoldでひな形を生成 [Ruby] All About では触れませんでしたが、scaffoldで作成されたapp/controllers/posts_controller.rb
でも同じ処理が行われているので見返してみてください。
それでは、実際にformに入力してpostしてみます。
なおicon
カラムには画像のURLを入力する仕様にしていますが、これは少々不便です。今後の連載で手元のファイルを直接アップロードしてアイコン登録する機能を追加する予定です。
rails console
でUserモデルを確認してみると、データが保存されたのが確認できます。
この際、sorceryの機能で保存時にパスワードが暗号化され、また同時にsaltが生成されているのがわかります。
次のページでは、emailとpasswordを使ってログインする機能、ログイン状態に応じて表示や機能を分岐する方法を解説します。