2.3.3 ユーザーはたくさんのマイクロポストを持っている
演習
1.
ユーザーのshowページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。同ファイル内の他のコードから文法を推測してみてください (コラム 1.1で紹介した技術の出番です)。うまく表示できたかどうか、/users/1 にアクセスして確認してみましょう。
1時間たっぷり考えて正解に至らず。検索して他の人のコードを参考に、というか、書き写した
views/show.html.erb
の下のほうに
.
.
.
<p>
<strong>first micropost:</strong>
<%= @user.microposts.first.content %>
</p>
<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
を追加。
これでクエリの発行から結果の表示までできるのか……。
どうも、SQLクエリを発行して、その結果を処理して、というイメージが離れない。
2.
リスト 2.16は、マイクロポストのContentが存在しているかどうかを検証するバリデーションです。マイクロポストが空でないことを検証できているかどうか、実際に試してみましょう (図 2.16のようになっていると成功です)。
指示通りにファイルを書き換えてみると、バリデーションチェックが動いてエラー表示になった
3.
リスト 2.17のFILL_INとなっている箇所を書き換えて、Userモデルのnameとemailが存在していることを検証してみてください (図 2.17)。
models/user.rbを次のように編集
class User < ApplicationRecord
has_many :microposts
validates :name, presence: true
validates :email, presence: true
end
2.3.4 継承の階層
演習
1.
本番環境で2~3人のユーザーを作成してみましょう
作成はできるもののエラーが表示される。
2.3.3.1の演習で改造したコードが悪さをしていたようで、削除後にherokuにデプロイしたら直った。
2.
本番環境で最初のユーザーのマイクロポストを作ってみましょう
これは普通に投稿できた。
3.
マイクロポストのContentに141文字以上を入力した状態で、マイクロポストを作成してみましょう。リスト 2.13で加えたバリデーションが本番環境でもうまく動くかどうか、確認してみてください。
バリデーションが動くことを確認した。
雑感
- ざっとやってみたけど、理解度がすごく怪しい
- 確実に一個ずつ進めていくのがいいのか、さっとまずは全体をやるのがよいのか悩ましい
- 一番、困るのは挫折することなのでひとまずはざっとやってみるか……?