Ruby/Rubyの基礎知識

RailsでTwitterクローンを作る(3) -- 投稿とユーザを紐付けする(2ページ目)

モデル同士の関連(association)を定義する方法、アプリケーションにユーザ認証を追加する方法、マイグレーション(migration)機能でDBスキーマに変更を加える方法などを学びます

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

ユーザ登録処理の実装

簡単なユーザ登録・ログイン機能を実装します。まずは前回の内容を思い出し、Controllerを作成、

rake routesで確認しながらroutingを記述します。今回はユーザ登録ページ(new)とユーザ作成(create)、ログインとログアウト処理を受け付けるようにします。

loginlogoutにするとsorceryの提供するメソッドと名前がかぶってしまうのでsigin, signoutにしています。

collectionブロック以下に書いたルーティングは、/users/...直下に定義されます。対応する概念はmemberで、collectionmemberに置き換えると「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してみます。

create

なおiconカラムには画像のURLを入力する仕様にしていますが、これは少々不便です。今後の連載で手元のファイルを直接アップロードしてアイコン登録する機能を追加する予定です。

rails consoleでUserモデルを確認してみると、データが保存されたのが確認できます。

この際、sorceryの機能で保存時にパスワードが暗号化され、また同時にsaltが生成されているのがわかります。

次のページでは、emailとpasswordを使ってログインする機能、ログイン状態に応じて表示や機能を分岐する方法を解説します。

  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます