紙一重の積み重ねスマートフォン用の表示で見る紙一重の積み重ねアラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。Micropostモデルの演習まとめ&解答例です。個人の解答例なので、誤りがあればご指摘ください。基本的なモデル本章での学び以下の属性を持つmicropostsテーブルを作成する。【Model】Micropostモデルの生成user:referencesを付与することで、ユーザーと1対1の関係であることを示す、belongs_to:userがモデルの中に付与される。自動生成されたマイグレーションファイルに、インデックスを追加する。user_idとcreated_atによる複合キーを生成する。========================演習1RailsコンソールでMicropost.newを実行し、インスタンスを変数micropostに代入してください。それぞれ代入してみてください。nil演習2先ほど作ったオブジェクトを使って、micropost.userを実行してみましょう。User"演習3先ほど作ったmicropostオブジェクトをデータベースに保存してみましょう。この時点でもう一度マジックカラムの内容を調べてみましょう。(Presence)」のバリデーションを追加する。現時点でテストがgreenになることを確認。skips【test】contentに対するバリデーションのテストcontent属性が存在すること、最大140文字であることの検証を追加する。(Presence)」のバリデーションを追加する。}end演習1Railsコンソールを開き、user_idとcontentが空になっているmicropostオブジェクトを作ってみてください。このオブジェクトに対してvalid?を実行すると、失敗することを確認してみましょう。生成されたエラーメッセージにはどんな内容が書かれているでしょうか?user_id属性とcontent属性にブランクが許可されていないことを確認。blank"]}演習2コンソールを開き、今度はuser_idが空でcontentが141文字以上のmicropostオブジェクトを作ってみてください。このオブジェクトに対してvalid?を実行すると、失敗することを確認してみましょう。生成されたエラーメッセージにはどんな内容が書かれているでしょうか?content属性は最大140文字であることを確認。User/Micropostの関連付け本章での学び【Model】マイクロポストは1人のユーザーに属するMicropost側から見ると、常に1人のユーザーに所属する。:userで関連付けを表すことができる。:user【Model】ユーザーがマイクロポストを複数所有する(has_many)User側から見ると、1人のユーザーが複数のMicropostを持つ。:micropostで関連付けを表すことができる。micropostではなく、複数形のmicropostsであることに注意。:microposts【Test】慣習的に正しいコードを作成するmicropostのインスタンス変数の生成の仕方を修正する。userに紐づいた、新しいmicropostオブジェクトを生成する。endテストを実行し、greenになることを確認。skips演習1データベースにいる最初のユーザーを変数userに代入してください。ipsum”)を実行すると、どのような結果が得られるでしょうか?データベースに保存される。04:17:44">演習2先ほどの演習課題で、データベース上に新しいマイクロポストが追加されたはずです。user.microposts.find(micropost.id)を実行して、本当に追加されたのかを確かめてみましょう。先ほど実行したmicropost.idの部分をmicropostに変更すると、結果はどうなるでしょうか?得られる結果は変わらないが、警告が出る。それぞれ確認してみてください。*どちらもtrueになる。scopeを使って、作成時間の降順の結果を得られるようにする。%>【Model】default_scopeで作成日の降順に並び替えるラムダ式を使って、ブロック内で作成日時created_atの降順:descを指定する。}endラムダ式callメソッドが呼ばれた際に、ブロックの中身を評価する。destroyユーザーが破棄された場合、ユーザーのマイクロポストも同時に破棄する。:destroyオプションを追加する。destroyのテスト以下のテストを実装する。endテストがgreenになることを確認。skips演習1Micropost.first.created_atの実行結果と、Micropost.last.created_atの実行結果を比べてみましょう。降順と昇順の結果を比較するため、一致しない。それぞれをコンソール上で実行したときに表示される文字列が、SQL文になります。BYの並び順にDESC(降順)が指定されている。新しいマイクロポストから表示される。BYの並び順にASC(昇順)が指定されている。古いマイクロポストから表示される。21:30:50">演習3データベース上の最初のユーザーを変数userに代入してください。次に、destroyメソッドを使ってそのuserオブジェクトを削除してみてください。削除すると、そのuserに紐付いていたマイクロポストも削除されていることをMicropost.findで確認してみましょう。ユーザーを削除すると、マイクロポストも削除されることを確認。ユーザーを削除して、Micropost.findを実行するとraise_record_not_found_exceptionが発生する。belongs_toとhas_manyを使うことで複数のモデルを簡単に関連付けることができました。Railsは本当に便利ですね。はてなブログProSIerで働く36歳のエンジニアです。自社WEBサービスの開発・AWSのインフラ構築を行っています。なれる最高のフルスタックエンジニアを目指して、RailsやAWSをこつこつ学習中。本を10冊出すことが夢です。PL/SQL」(シーアンドアール研究所)の著者。#devsumiDスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。