アプリケーションにユーザ情報を加える

前回の記事 RailsでTwitterクローンを作る(2) -- 画面レイアウトを整える [Ruby] All About では、レイアウトや画面遷移に変更を加える方法を解説しました。

今回は新たにUserモデルを作成して、sorceryを使ってアプリケーションにユーザ認証を追加する方法、モデル同士の関連(association)を定義する方法、マイグレーション(migration)機能でDBスキーマに変更を加える方法などを学びます。

sorcery gemを導入、ユーザモデルを作成

sorceryはRailsにシンプルなユーザ認証認証を提供するgemです。Gemfileに

を1行追加してbundle installでインストールされます。その後bundle exec rails generate sorcery:installを実行すると、以下のように標準テンプレートが作成されます。

migrateファイルdb/migrate/20140423163942_sorcery_core.rbの中を見てみると、email、暗号化パスワード、saltが定義されています。なお、Saltについては Saltってなに? -- いまさら聞けないパスワードの取り扱い方 などを参考にしてください。

マイグレーションを実行してDBにusersテーブルを作成します。

また、作成されたUserモデルのコード(app/models/user.rb)を覗いてみると、ActiveRecord::Baseを継承した標準的なモデルに、authenticates_with_sorcery!の1行が加えられているのがわかります。

さらに、画面に表示する時に「ユーザ名(name)」と「アイコン画像(icon)」があると見栄えがしそうなので、追加しておきます。以下のようにしてrails generate migrationコマンドでマイグレーションファイルを作成します。gはgenerateサブコマンドの省略形です。

AddNameAndIconToUsersとしましたが、名前は動作に関係しないため、後で見返して判別の付く名前であればなんでも良いです。こうして生成されたdb/migrate/20140425171430_add_name_and_icon_to_users.rbdef changeメソッド中にadd_columnの2行を追加して、

再びrake db:migrateを実行すると、最終的にusersテーブルは次のようなスキーマとなります。

次のページでは新規ユーザの登録処理を作成します。