【rails】ユーザーと記事の紐づけ②(モデルの変更)

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

関連性(リレーション)を作る

前回:articlesテーブルにuser_idのカラムを追加

今回:使えるようにモデルの変更をしていく


ActiveRecordの設定をする

ユーザーに記事を紐づける

app/models/user.rbでhas_many :articles, dependent: destroy追加する

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

         has_many :articles, dependent: :destroy

has_many :articles → 「userはarticleをたくさん(many)持っている」

dependent: :destroy → userが削除(退会)された場合、記事も削除「destroy」される

has_many」で「たくさん持っている」なので、「articles」と複数形で書く


記事にユーザーを紐づける

app/models/user.rbでbelongs_to :userを追加する

class Article < ApplicationRecord
  # 中略
  belongs_to :user
end

記事に対して、紐づけるuserはひとりなので単数形で書く

belongs_to」は所属する、という意味


ユーザーに紐づく記事を作成する

「user.」で書き始めるだけ

rails cで、コンソール画面を開く

↓ まずUserの中から最初のひとりを取得する

user = User.first

↓ user.articles.create!で記事を作成する

user.articles.create!(title: 'useruseruser', content: 'aaa...')

(content:は100文字以上のvalidationがあるので省略)実行!


user_id: ◯と紐づく

作成した記事はuser_id: 4と紐づいている

<Article id: 29, title: "useruseruser", content: "aaa...", created_at: "2024-08-28 12:18:52",
updated_at: "2024-08-28 12:18:52", user_id: 4>]>

Article.lastで呼び出しても、user_id: 4と紐づいている

Article.last

<Article id: 30, title: "useruseruser2", content: "bbb...", created_at: "2024-08-28 12:22:19",
updated_at: "2024-08-28 12:22:19", user_id: 4>

Article.last.userでユーザー情報を呼び出しても紐づいている

Article.last.user

<User id: 4, email: "sample1234@gmail.com",
created_at: "2024-08-25 05:28:06", updated_at: "2024-08-25 05:28:06">

次回は、コンソール画面じゃなくてフォームから記事投稿できるようにしていく

#DAY20