pon

日常のこととグルメなことを発信しています

rails tutorialの第二章『toy app』の備忘録&かんたんなまとめ

 

ユーザーモデルのカラムを作っていく 

 

              demo_user_model

今回はscaffoldを使って簡単にユーザー登録ができるようなアプリを作っていく。なので、まずはユーザーというモデルを作っていく。注意するべきところが、この表に書いてあるusersというのがモデルではないことだ。rails初心者はこのusersというのがモデルだと勘違いしてしまう。どうでもよくね?と思うかもしれないがとても重要。このせいで僕も混乱した。このusersというのはテーブル名である。つまりユーザーというモデルのなかにusersというテーブル名があることになる。そしてその下にあるidやnameなどがカラムになる。そしてその隣にあるintegerとかが「型」になる。ここを間違えると本当に混乱する。ていうか混乱した。

            demo_micropost_model

次にマイクロポストと呼ばれるコメントを投稿する機能を持ったモデルの設計をしていく。ここでもmicropostsというのはテーブル名なので注意。そしてカラムの中を見るとcontentというのがあるがこれは型を見てもらえばわかる通り「text」なのでコメントの本文がくることがわかる。ここで疑問に思ったのがなんでコメントをするのにuser_idが必要なのかということ。結論から言うとコメントとユーザーは紐づいてるから。例をあげるならtwitter。ツイッターはログインをしないと投稿ができないし編集もできない。つまりコメントをするのが誰かがわからなきゃだめだと言うこと。だからユーザーがここで入ってくる。

 

モデルの実装

 

$ rails generate scaffold User name:string email:string

このコマンドを打っていく。この大文字から始まるUserはモデルの名前。そのあとのnameはカラムの名前。そのあとの:stringが型の名前。さっき混乱したと言っていたがまさにここで、なんでさっきの箱にはusersと書いてあったのにこっちではUserなんだよって感じで混乱してた。

 

マイグレートをする

ここでもなんでマイグレートをしなきゃいけないんだろうってすごい疑問に思ってたんだけどつまりはゲームでいうセーブみたいなもんだと覚えた。

 

MVCモデルについて

ãmvcã¢ãã«ãã®ç»åæ¤ç´¢çµæ

ここの理解が本当に時間がかかった。rails初心者はこれだけ覚えておけば問題ないいんじゃないかってくらい重要。

f:id:daiki0421kun:20181111222757p:plain

↑今回作ったアプリのルーティング

f:id:daiki0421kun:20181111224351p:plain

↑今回作ったアプリのコントローラー(一部省略)

 

今回はユーザーを新規登録するのと関係しているnewアクションを例に説明していく。

 

  1. ユーザーを登録するというボタンを押す
  2. ルーティング内でそのボタンと関連があるnewアクション(今回はresourse:userの中)がコントローラー内で同じnewアクションを見つけ実行する。
  3. newアクションに基づくview(今回はapp/views/new.html.erb)が表示される。

この3の表示されたものが下の画面。

f:id:daiki0421kun:20181111224057p:plain

これを理解できないと自分で開発するときに手も足も出ない。また、User.newを@のインスタンス変数に渡さなければいけない理由がいまだにわからない。とりあえず理解できてるのはこのインスタンス変数に渡さないとUser.newではビューでは使えないということ。

 あとはほとんど理解できたので省略する。わからないところ等があったら意見を共有試合ましょう!

ではまた!