10000hの技術メモ

この先生きのこるための勉強内容&時間記録

Ruby on Rails Ⅵ 1章 いいね!機能を作ろう

201703018@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

目次

いいね!機能のテーブルを作ろう

いいね!機能には「どのuser」が「どのnote」にいいねしているのか、という情報が必要。likesテーブルを作って情報を持つ。

# Likeモデルとマイグレーションファイルの作成
rails g model Like user_id:integer note_id:integer

# マイグレーションファイルに従ってlikesテーブルを作成
rake db:migrate

多対多の関係

userとlikeは1対多の関係。これはuserとnoteの関係と一緒。 noteとlikeも1対多の関係。

いいね!機能を追加することで、userとnoteが多対多の関係になる。前の項で作ったlikesテーブルのようなテーブルを「中間テーブル」という。

modelの中でこの関係を表す書き方

  • has_many
  • belongs_to

を再度確認。

参考:Rails4で1対多のリレーションをモデルに実装する - Rails Webook

いいね!機能の準備をしよう

投稿ページに「いいね!」リンクをつける。

likeコントローラを作るために

rails g controller likes

いいね!機能を実装しよう

いいね!リンクが押下されたときにDBに保存する。既にいいね済のときには、いいねリンクでなく「済」と表示。 これも今時のWebサービスなら当然有るべき機能。。

find_byメソッドを使って、テーブルから条件に合うデータを取得する。

変数likeに、current_userとbuildを用いてLikeインスタンスを代入してください

がいまいちわかってない。

find_byはうまいこと使えた。 メソッドの引数に最初はuser_idとnote_idの両方を指定していたけれども、

current_user.likes.find_by~

という書き方をすればuser_idを省略できるらしい。

いいね!を取り消そう

unlikeまわりの実装。

今回の勉強時間:45分 累計勉強時間:14時間7分