多対多の関連テーブル
前に一度やったのを久しぶりにやると,またはまった・・・orz
なので忘れないうちにメモ.
Rails でテーブルの多対多を表すためには,has_and_belongs_to_many を使う.例えば,Person と FavoritThing というモデルがあったとする.Person は FoveritThing を幾つか持つとすると,次のように書く.
class Person < ActiveRecord::Base has_and_belongs_to_many :foverit_things end
このとき,has_and_belongs_to_many の引数に 参照先モデルの複数名を指定する.また,双方向にしたい場合は,参照先にも同様に定義する.
class FavoritThing < ActiveRecord::Base has_and_belongs_to_many :people end
注意するのは,関連テーブルもマイグレーション等で作っておく必要がある.関連テーブルのテーブル名は,二つのモデルの複数形をアルファベット順に並べて,”_” で繋げた物になる.