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分