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のルールとか積極的に使いたいなと思う。