【rails】記事に「いいね」する

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

記事に「いいね」する

ユーザーがいて、記事がある

ユーザーと記事の間に「いいね」という関係性がある

usersテーブル ー likesテーブル ー articlesテーブル

likesテーブルはn対nの中間テーブルになる


Likesテーブルを作る

ターミナルで以下を実行する

rails g model Like


Likesテーブルをユーザー・記事と紐づける

Likesテーブルはユーザーと記事の関係性をつなぐ中間テーブル

user_idとarticle_idのカラムが必要なので、:user、:articleと紐づけておく

null: false
  • userがないのに「いいね」できない
  • articleがないのに「いいね」できない

データベースに反映させる

ターミナル画面で以下を実行する

rails db:migrate

「いいね」との関係を考える

ユーザーから見た「いいね」

  • まず、usersテーブルとlikesテーブルだけの関係を考えてみる
  • ユーザーは複数「いいね」するので、has_many :likesとなる

app/models/user.rbに書き加える

has_many :likes, dependent: :destroy


記事から見た「いいね」

  • まず、articleテーブルとlikesテーブルだけの関係を考えてみる
  • 記事は複数「いいね」されるので、has_many :likesとなる

app/models/article.rbに書き加える

has_many :likes, dependent: :destroy


「いいね」から見たユーザー、記事

  1. ユーザーは複数「いいね」する
    記事は複数「いいね」される
  2. 「いいね」はユーザーと記事に所属しているので、belongs_toとなる

app/models/like.rbに書き加える

class Like < ApplicationRecord
  belongs_to :user
  belongs_to :article
end

これでn対nのリレーションが完成する

#DAY25