※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
リレーションとは
アプリケーションにおいて繋がっているデータの関連性をリレーションという
リレーションの例
- ユーザー ↔ 記事
- ユーザー ↔ プロフィール
- ユーザー ↔ フォロワー 等
個々に存在しているものを紐づける必要がある
- usersテーブルにはユーザーの情報(user_id・email)が入っている
- articlesテーブルには記事の情報(title・content等)が入っている
articlesテーブルに、usersテーブルのuser_idのカラムを追加する
migrationファイルを作ってデータベースの情報を変える
rails g migration AddUserIdToArticles
実行するとVScodeのdb/migrateにファイルが増えている
AddUserIdToArticlesの名前について
- カラムを追加するとき「Add」をつける
- 追加したいカラム名「UserId」を入れる
- 「To」で、テーブルにカラムを追加する
- 追加したいテーブル「Articles」を入れる
db/migrate/日付_add_user_id_to_articles.rbを開く
カラムを追加するコードは複数あるが、railsの用意したadd_reference
を使うのが良い
class AddUserIdToArticles < ActiveRecord::Migration[6.0]
def change
add_reference :articles, :user
end
end
user_id
を入れるだけじゃなく、検索のしやすさなどのパフォーマンスが向上する
↓ migtationをデータベースに反映させる
rails db:migrate
add_column :articles, :user_id, :integer
- カラムを追加するとき「
add_column
」 - 追加したいテーブル「
:articles
」 - カラム名「
:user_id
」 - 型「
:integer
」(整数)
これはカラムを追加する基本的な書き方だが、関連性を作るには適していない
db/schema.rbでデータベースが変更されているか確認
articlesテーブルにuser_idが追加されている
ActiveRecord::Schema.define(version: 2024_08_25_120840) do
# 中略
t.integer "user_id"
このままでは使えないので、モデルにも変更を加える
#DAY20