「どのユーザー」が「どの投稿」をいいねしたかを記録するために、データベースに「user_id」と「post_id」2つのカラムを持つlikesテーブルを用意しましょう。下の図のように、user_idが1、post_idが2のデータは、「id:1のユーザーがid:2の投稿をいいねした」ということを表します。db:migrate右の図のコマンドを実行して、Likeモデルとマイグレーションファイルを用意しましょう。likesテーブルにはuser_idとpost_idの2つのデータを持たせるようにしてください。db:migrate」を実行して、データベースに反映させましょう。バリデーションを追加するvalidatespresenceいいねのデータは、user_idとpost_idの両方が常に存在していないと不完全なデータとなってしまいますので、最初にバリデーションを追加しておきましょう。true」のバリデーションを追加します。コンソールでlikesテーブルにデータを追加してみましょう。2)」とすることで、「idが1のユーザーが、idが2の投稿にいいねした」というデータを作成することができます。投稿詳細ページでは、「ログインしているユーザーがその投稿にいいねしたデータが存在する」という条件を満たす場合、「いいね!済み」と表示するようにしましょう。逆に、この条件を満たしていない場合には「いいね!していません」と表示しましょう。「ログインしているユーザーがその投稿にいいねしたデータが存在する」という条件のために、user_idとpost_idが合致するデータがlikesテーブルに存在するかどうか、find_byを用いてチェックします(find_byは該当するデータが見つからなかった時にnilを返すことを思い出しましょう)。controller」コマンドで自動生成してきました。コマンドを用いるとビューファイルなども自動生成されますが、今回はそれらのビューファイルが必要ないので、コントローラを手動で作ってみましょう。controllersフォルダ内に「likes_controller.rb」というファイルを新規作成し、右の図のように大枠を記述するだけで作ることができます。それではcreateアクションの中身を完成させましょう。createアクション内では新たにデータを作成後、投稿詳細ページへとリダイレクトさせます。user_idは@current_userから、post_idはparamsから取得して作成しましょう。作成したcreateアクションへのリンクを投稿詳細ページに追加しましょう。下の図のように、今までは「いいね!していません」と表示していた部分を、「いいね!」するためのリンクに書き換えます。show.html.erbいいね取り消しボタンを作ろうdestroyアクションを用意しようfind_bydestroy「いいね!」を取り消す機能を作るために、まずはlikesコントローラにdestroyアクションを作成しましょう。destroyアクション内では、受け取った@current_user.idとparams[:post_id]をもとに削除すべきLikeデータを取得し、destroyメソッドを用いて削除します。Awesome」とは、様々なアイコンをフォントとして利用できるようにしたものです。中級編でも用いたので、忘れてしまった場合は復習をしておきましょう。Awesome」を利用するには、タグ内で読み込みをする必要があります。今回はそこに読み込み用のタグを追加しましょう。fa-heart」というクラス名をつけることで、ハートアイコンを表示することができます。右の図のようにlink_toメソッド内にHTML要素を記述すると正しく表示することができません。HTML要素に対してlink_toメソッドを使う方法を次のスライドで見てみましょう。HTML要素に対してlink_toメソッドを使うlink_todoHTML要素に対してlink_toメソッドを使うには、少し異なる書き方をする必要があります。右の図のように、との間にHTML要素を書くことで、その部分をリンクにすることができます。ink_toメソッドでハートアイコンを表示するlink_todolink_toメソッドでハートアイコンを表示してみましょう。3px;}countメソッドcountlikesテーブルからデータの件数を取得するには、countメソッドを用います。countメソッドは配列の要素数を取得するメソッドですが、テーブルのデータ数を取得するためにも利用することができます。@post.id).countendいいねした投稿を表示しよう(1)likesアクションを用意する「いいね!」をした投稿を一覧で表示するために、likesアクションをusersコントローラ内に作成しましょう。ルーティングのURL部分はshowアクションと同様に、どのユーザーに関する情報を表示するかを判断するために「users/:id/likes」とします。likesendshow.html.erblikesアクションを完成させようwhereビューで用いる変数をアクション内で定義しましょう。whereメソッドを用いてそのユーザーに関するデータをlikesテーブルから取得し、変数@likesに代入します。likesアクションのビューfind_bylikesアクション内で定義した変数@userと@likesを用いて、ビューも完成させましょう。各投稿を1つずつ表示するためには、@likesに対してeach文を用いて、likeに紐付いているpostを表示させます。行頭へ移動するには、「0」を入力します。行末へ移動するには、「$」を入力します。DISTINCTを用いると、検索結果から重複するデータを除くことが可能です。VIIIログインとは、サイトを操作しているユーザーが誰であるかが判別できる状態のことをさします。専門技術講座」について受講を考えています。(2,homeのページつくる。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。おすすめの勉強方法や教材、受験申込み。