DB設計:中間テーブル
中間テーブル
テーブルが「多対多」の場合は、カラム同士の関係性だけを搭載したテーブルを間に作る。
user_classesテーブル
id | user_id | class_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 3 |
4 | 2 | 1 |
through
「多対多」のアソシエーションで使う。
usersテーブル
class User < ApplicationRecord has_many :user_classes has_many :classes, through: :user_classes end
classesテーブル
class Class < ApplicationRecord has_many :user_classes has_many :users, through: :user_classes end
user_classesテーブル
class UserClass < ApplicationRecord belongs_to :user belongs_to :class end
ジェイウォーク(jaywalk)
中間テーブルを使わないよくない実装の形。アンチパターンの一つ。
一つのidカラムに、複数の情報を入力した状態とか。
それを解消するための中間テーブル。
- jaywalk: 〔交通規則を無視して〕道路を横断する、横断歩道のないところを横切る◆【語源】jay(不注意な人)から。
コントーラー生成時に不要ファイルが作られないように。
config/application.rb
module HogeApp class Application < Rails::Application config.generators do |g| g.stylesheets false g.javascripts false g.helper false g.test_framework false end end end
READ ME
アプリケーションの説明書(rails new
で自動作成)
マークダウンで書く