niki12260714の日記

フリーランスのITエンジニアの呟き。

Ruby学習13日目:DBへの登録と検証

まだキリが良くないですけど、そろそろ体力が尽きそうなので、途中経過。
何が悪かったって、最初のモデル生成が間違っていたってことで……orz

・IDと作成日、更新日は自動生成されるから、考える必要ない
・テーブル名間違っていた
・カラム一個入れ忘れていた

→なので、マイグレーションかけているんだけど、シンタックスエラー言われていているのが今ココ!

ですが、DBに保存まではできました。

f:id:niki12260714:20170916222210j:plain

※ユーザー登録画面
Viewはこんな感じ。
usersというテーブルに対して登録するんで、routeで以下の定義。

f:id:niki12260714:20170916222350j:plain

※routes.rb
resourcesにusers(DB名は複数形になる)を指定してあげると、自分で書かなくてもrouteを定義してくれる。
コマンド打つと分かる。

f:id:niki12260714:20170916222553j:plain

コマンドラインのキャプチャ

usersに対してformをPOSTする先のusers#createが定義されているのが確認できます。
なので、Controllerクラスにcreateというメソッドを作ると、そこで新規作成される。

そしてmodelの方では、POSTされた値を検証する。

f:id:niki12260714:20170916222920j:plain

※usersのmodel

コメントで「検証ルール定義」って書いたブロックのところが、各カラムがどんな値であるべきかを大まかに定義できる。
外れていればエラーとして戻され、Viewの方で受け取ってエラーメッセージをループで回すことで表示できる。
そしてcreateで投げてきたので、自動的にDB保存まで流れるけど、その時にコールバック関数を登録することで、dbの登録前にデータをいじることが可能。
ここでやっているのは、url_txtというカラムに対し、メールアドレスをMD5ハッシュ値に変更して登録しようとしている。
……というところで、url_txtというカラムをDBに定義しそびれていて、マイグレーションかけているのが今の状況。
明日の朝はここから再開。
DBを整理したら、DBへの登録、登録した値を使ってログイン(selectした結果を受けての画面遷移)を作ります。