らくだ🐫にもできるRailsチュートリアル|2.3(と2.4)

2.3 Micropostsリソース

2.3.1 マイクロポストを探検する

Usersリソースの時と同様にmicropostsリソースを生成する

scaffoldでMicropostsリソースを生成したのでroutesファイルが更新されている外、
controllerやviewファイルも自動生成されている

マイクロポストを作成してみる

/microposts/newにアクセスしていくつか投稿してみる

演習

CSSを知っている読者へ: 新しいマイクロポストを作成し、ブラウザのHTMLインスペクター機能を使って「Micropost was successfully created.」の箇所を調べてみてください。ブラウザをリロードすると、その箇所はどうなるでしょうか?

マイクロポストの作成画面で、ContentもUserも空にして作成しようとするどうなるでしょうか?

どちらも問題なく登録できてしまう(本来は良くないのでエラーになりたい)

141文字以上の文字列をContentに入力した状態で、マイクロポストを作成しようとするとどうなるでしょうか? (ヒント: WikipediaのRubyの記事にある1段落目がちょうど150文字程度ですが、どうなりますか?)

問題なく登録できてしまう(本来は良くないのでエラーになりたい)

上記の演習で作成したマイクロポストを削除してみましょう。

/micropostsの一覧表示にあるdeleteボタンを使って削除

2.3.2 マイクロポストをマイクロにする

文字数の制限

バリデーション = 検証 設定した内容に該当しない場合、データベースに保存されずエラーになる
この場合、contentsカラムの内容が最大140文字を超えるとエラーになる

演習

先ほど2.3.1.1の演習でやったように、もう一度Contentに141文字以上を入力してみましょう。どのように振る舞いが変わったでしょうか?

エラー表示が出て投稿できなくなっている

CSSを知っている読者へ: ブラウザのHTMLインスペクター機能を使って、表示されたエラーメッセージを調べてみてください。

2.3.3 ユーザーはたくさんマイクロポストを持っている

「has_many」↑と↓「belongs_to」は対になっている

この関連付けをすることで
「user_idが1のmicropostsをすべて表示する」
「このmicropostの投稿者のUserページを表示する」などの動作を付けられるようになる。

rails console

演習

ユーザーのshowページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。同ファイル内の他のコードから文法を推測してみてください (コラム 1.1で紹介した技術の出番です)。うまく表示できたかどうか、/users/1 にアクセスして確認してみましょう。

表示できました!

(User_idが2の投稿もあるので、/users/2にもmicropostが表示されていました)

リスト 2.16は、マイクロポストのContentが存在しているかどうかを検証するバリデーションです。マイクロポストが空でないことを検証できているかどうか、実際に試してみましょう (図 2.16のようになっていると成功です)。

リスト 2.17のFILL_INとなっている箇所を書き換えて、Userモデルのnameとemailが存在していることを検証してみてください (図 2.17)。

2.3.4 継承の階層

本文ママ

演習

Applicationコントローラのファイルを開き、ApplicationControllerがActionController::Baseを継承している部分のコードを探してみてください。

ApplicationRecordがActiveRecord::Baseを継承しているコードはどこにあるでしょうか? 先ほどの演習を参考に、探してみてください。ヒント: コントローラと本質的には同じ仕組みなので、app/modelsディレクトリ内にあるファイルを調べてみると…?)

2.3.5 アプリケーションをデプロイする

本文ママ
また、2.3.3.1の実習内容がそのままだったので
show.html.erbに追加したMicropoft表示用のコードをコメントアウトして再push

演習

本番環境で2〜3人のユーザーを作成してみましょう。

Herokuのアプリを開いて、名前とメールを入力してボタンをクリック。
所がエラー表示!

ログを確認しろとの事なのでターミナルから確認します

怪しい部分を教えてくれます。ありがたや。
そしてapp/views/users/show.html.erbの15行目と言うのが先ほどコメントアウトしたMicropoft表示用のコード
はて?コメントアウトはいかんのか?と思いつつ、削除して再push
/users/show.html.erbが無事表示されました※URLは/users/3(user_id)

2,3については動作確認のみ、エラーなしだったので省略

2.4 最後に

まとめなので省略

まとめとか感想

基本的には2.2の復習的な内容だったのでさほど詰まらず
エラーもあったけどサクっと対応できたので良かったでした。

らくだ🐫にもできるRailsチュートリアルとは

「ド」が付く素人のらくだ🐫が勉強するRailsチュートリアルの学習記録です。
自分用に記録していますが、お役に立つことがあれば幸いです。

調べたとはいえらくだ🐫なりの解釈や説明が含まれます。間違っている部分もあるかと思います。そんな所は教えて頂けますと幸いなのですが、このブログにはコメント機能がありません💧お手数おかけしますがTwitterなどでご連絡いただければ幸いです