問題一覧に戻る
上級高度なデータベース
問題61: 自己結合 - self-referential associations

モデルが自分自身と関係を持つ自己参照関連を作成する方法を学習します。このパターンは、従業員とマネージャーの関係、ソーシャルネットワークの友人関係、親子関係を持つカテゴリツリーなどの階層データで一般的に使用されます。

# 外部キーカラムを追加
add_reference :employees, :, foreign_key: { to_table: :employees }

# Employee model
class Employee < ApplicationRecord
# 親関連を定義
belongs_to :manager, class_name: "", : :manager_id, optional: true

# 子関連を定義
has_many :subordinates, class_name: "Employee", : :manager_id
end

# 階層データをクエリ
@employee. # Get all subordinates