どうも!chuckです。ついに6章に突入しました。もう半分終わっちゃったんですね(しんみり)6章からは本格的なRailsの勉強が始まり、Webアプリケーションに必須な機能をつけていきます。
今後のおしながき
6章、ユーザーのデータモデルの作成。データを保存する手段の確保。
7章、ユーザーがサイトに登録できるようにし、個人プロフィールページを作成する。
8章、サインイン、サインアウトを可能にする。
9章、不正なアクセスを拒否する方法を学ぶ。
6章 ユーザーのモデルを作成する
まずやることはビューの作成ではなく、データを保存しておくためのデータ構造の作成。
Railsではデフォルトのデータ構造をモデルと呼ぶ。そして、モデルを永続化させるためにはデータベースを利用し、データベースとのやりとりを行うのがActiveRecordである。
でた!ActiveRecord!勉強しておいてよかったw
さらにマイグレーションという機能により、SQL文を使わずしてデータベースに干渉できる。なぜならマイグレーションの中身はデータベースの変更を行うchangeメソッドの集まりだからである。
モデルを作成する
generate controllerでコントローラを作成できるばかりじゃなく、generate modelも可能。
ちなみに前者では引数にアクション名を取り、後者では引数にデータの列を取る。
MigrationUp
マイグレーションは以下のコマンドで実行する。これをマイグレーションの適用(MigrationUp)という。
ちなみにscaffoldも似たような文法で実行する。
MigrationDown
Railsではマイグレーションは可逆的である。つまり以下のコマンドで取り消すことができる。
これは内部的にDropTableを実行してくれるおかげ、とのこと。
データの検証
通常のSQL同様、not null, uniqueなどの制約をつけることができる。
ActiveRecordでは存在性(presence), 長さ(length), フォーマット(format), 一意性(uniqueness)と呼ばれる。また最終検証としての確認(confirmation)も存在する。
まず、テスト環境用のデータベースを作成する。
さらっと怖いことが書かれている。
存在性の確認
ここでvalidatesはメソッド。:name, と { presence: true}の2つを引数にとっている。
長さの検証
validatesメソッドの第二引数の中にlengthを追加する。この場合、maximum:50なので50文字以内という制限を課している。
フォーマット
lengthと同じく、formatをハッシュの中に含める。
そしてパスワード認証へ
うーむ、、このあたりはけっこう曖昧感がある。
要はhas_secure_passwordをuser.rbに含めればいいとのこと。
またあとで読みなおそう。
というわけでひとまず6章終了。