※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
関連性(リレーション)を作る
前回: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
」は所属する、という意味
ユーザーに紐づく記事を作成する
rails cで、コンソール画面を開く
↓ まずUserの中から最初のひとりを取得する
user = User.first
↓ user.articles.create!
で記事を作成する
user.articles.create!(title: 'useruseruser', content: 'aaa...')
(content:は100文字以上のvalidationがあるので省略)実行!
作成した記事は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