ほげほげパッチ

有る事無い事 徒然なるままに

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で自動作成)

マークダウンで書く