前のパートに戻る 完了して次のパートへ  

  2-6 新規登録の際にユーザーの必要な情報を持たせる

deviseはデフォルトだとemailとパスワードの情報を保存します。それ以外の情報を保存するには、カラムを追加する必要があります。今回のパートではユーザーの名前を保存するための開発をします。

学習キーワード


- カラム
- マイクレーション
- ストロングパラメーター
- devise_controller

カラムを追加するマイグレーションファイルを作成する


現状のusersテーブルにはemailとパスワードのカラムしかないので、ユーザーの名前や性別、自己紹介の文章やプロフィール画像を保存するカラムが存在しません。 なので、まずusersテーブルにカラムを追加するマイグレーションファイルを作成します。 以下のコマンドを実行してください。

$ rails g migration AddColumnToUser

上記のコマンドを実行することで、db/migrateフォルダの中にマイグレーションファイルが作成されます。

作成されたマイグレーションファイルを以下のように編集してください。

db/migrate
└── xxxxxx_add_culomn_to_user.rb


カラムを追加する際は以下のように書きます。

add_column :テーブル名, :カラム名, :データ型, オプション

オプションにはカラムの桁数を指定する:limitやカラムのnullを許可しないnull: falseなどがあります。

マイグレーションファイルを実行して、usersテーブルにカラムを追加する


マイグレーションファイルを作成しただけでは、テーブルに反映されないので、マイグレーションファイルをテーブルに反映するにはマイグレーションファイルを実行する必要があります。以下のコマンドで実行できます。

$ rails db:migrate

これでusersテーブルに新規登録の際に必要なカラムを追加しました。

追加したカラムを新規登録する際やアカウントを編集するときに保存できるようにする


deviseを使っている場合、デフォルトにないカラム(emailとpasswordカラム以外)を保存できるようにするにはstrong parameterにカラムの追加の許可を指示してあげる必要があります。以下のような形でapp/controllers/application_controller.rb内に configure_peritted_parametersを追加してください。

参考 )strong parameterとは

app
└── controllers
    └── application_controller.rb

上記のコードでサインアップする際にnameカラム・self_introductionカラム・sexカラム・img_namカラムを保存できるようになります。

またkeysのコードは以下のように書くこともできます。

keys: [:name, :self_introduction, :sex, :img_name]

ただ%記法を使った方がより短く書くことができるので今回は%iを使っています。%記法については以下のリンクを参考にしてください。

参考)Rubyで%記法(パーセント記法)を使う

また、以下のコードはCSRFへの対策のためです。セキュリティに関しては本教材の趣旨ではないので説明は省略します。興味がある人は調べてみてください。

protect_from_forgery with: :exception

参考)クロスサイトリクエストフォージェリ (CSRF)

以上で今回のパートは終了です。

議論
5 質問
このコースの評価は?