Ruby on Rails チュートリアル 第2章 まとめ

  • 2.1 アプリケーションの計画
  • 2.2 Usersリソース
  • 2.3 Micropostsリソース
  • 2.4 最後に

2.1 アプリケーションの計画

  • やったこと
    ・環境設定
      $ cd ~/environment
      $ rails 5.1.6 new toy_app
      $ cd toy_app/
    Gemfileの編集
    Gemのインストール
      $ bundle install --without production
    Gitの設定
      $ (git init) <- AWS Cloud9 でやっているがアプリケーション作成時にできていた
      $ git add -A
      $ git commit -m "Initialize repository"
    (順番違うけど・・・)
    Hello Worldの作成 (controller, routes.rbの編集)
    Bitbucketでリポジトリの作成
      リポジトリにプッシュ
    Herokuへプッシュ

  • お勉強
    マイクロブログのユーザーモデル・マイクロポストのデータモデル

  • その他やったこと
    rails severの起動
  • 困ったこと
    rails severが起動しない!
      コマンド実行するディレクトリが違うだけだった。。。
    Hello Worldがエラーになる!
      routes.rbの書き方が間違ってた。
      記憶を頼りに書いたが、記憶は当てにならん。
    それでもHello Worldがエラーになる!
      application_controller.rbの追記した行の
      "html:"のところが"html :"になってた。
      スペースダメか。htmlっていうメソッドないよ。と言われてた記憶。
    herokuコマンドがない!
      heroku --versionやってもコマンドないよと言われる
      結局、1章のインストールのコマンドを実行した。
      インストールしたんだからいいと思うんだが・・・?

2.2 Usersリソース

  • やったこと
    Usersリソースの作成
      $ rails generate scaffold User name:string email:string
    データベースのマイグレート
      $ rails db:migrate
    (サーバーの起動は省略)
    ユーザーページをいろいろさわる
    routes.rbの編集
      hello worldからuserのindexへ変更
  • お勉強
    MVCの挙動について概要とファイルをおっかけていく
    routes.rbファイル
    users_controller.rbファイル
    RailsにおけるREST
    user.rbファイル
    index.html.erbファイル

2.3 Micropostsリソース

  • やったこと
    Micropostリソースの作成
      $ rails generate scaffold Micropost content:text user_id:integer
    デーベースのマイグレーション
      $ rails db:migrate
    Micropostsをいろいろさわる
    contentに文字数制限の追加
      micropost.rbにvalidatesを追加
      エラーの確認
    ユーザーとマイクロポストの紐付け
      user.rb へ has_many追加
      micropost.rb へ belongs_to追加
    rails consoleによる関連付けの確認
      SQLが勝手に発行されてる!
  • お勉強
    継承ついて

  • 困ったこと
    演習がいろいろ困った。
    ユーザーの最初のマイクロポストを表示できない!
      ユーザーからmicropostを取得できなかった。
      いろいろいじった結果、以下の理解不足が原因だったのかな・・・
      (何回もそんなメソッドないよ的な感じで怒られてた。)
      rubyの仕様がよくわからないのでイメージだが・・・
      1.@user.micropostsでとってこれるのはレコードのリスト
      2.リストなので.contentをしても値が取得できるわけがない。
      3.リストに対し、.firstをすればリストの1レコード目が取得できる。
      4.micropostsのレコードに対しては.contentで値がとれる。
    Userモデルへのバリデーションチェックができない!
      そんなメソッドないよと怒られた気がする。
      できなかったのはイメージで書いてたから。
      nameとemailに対してバリデーションするところをなぜかuserとidでやってた。
      恥ずかしい・・・

  • その他やったこと
    nilチェックの追加
      ユーザーの最初のマイクロポストの表示のやつにチェックを追加してユーザーと六できるようにした。
      悩んだのはどこに対してチェックをするか。
      @user.microposts.first.content
      でcontentあが取得できるが、userはnilでないとしてどこがnilになるんだ?というとこ。
      試してやった結果、.firstの結果がnilになっていた。
      上で困ったことと合わして考えるとリストはあるけど、中身がないって感じなのかな。

2.4 最後に

振り返りとまとめ
お疲れ様でした。

2.X 感想

一日経つと忘れる部分が多い!

DBがアプリの一部な感じが気持ちいいような不気味なような気がしてしまう。
自分でSQL書きたい半面、ネ申なSQLが作れなくなるからいいのかな。
何百行あるようなSQLとか見なくて済むのは楽でいいな。

バリデーションチェックをモデルに書けばいいのはすごい嬉しい。
DBには変なデータは入らないようにすべきだよね。
DBのルールとか積極的に使いたいなと思う。