アプリケーションにユーザ情報を加える
前回の記事 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.rb
のdef change
メソッド中にadd_column
の2行を追加して、
再びrake db:migrate
を実行すると、最終的にusersテーブルは次のようなスキーマとなります。
次のページでは新規ユーザの登録処理を作成します。