平衡点
2006/08/02
_ n:n のリレーションシップ
解決. 中間テーブルを使って, has_and_belongs_to_many().
例えば papers と authors のリレーションを作成したい, とする.
- paper には複数の author がいる(場合もある).
- author は沢山 paper を書いている(…場合もある).
この場合, migration は
def self.up creata_table(:authors_papers, :id=>false) do |table| table.column(:author_id, :integer) table.column(:paper_id, :integer) end end def self.down drop_table(:authors_papers) end
みたいにして. primary_key は author_id と paper_id から一意に決まるので不要. あると id を上書きして祟るので, false にしておく.
あとは
# app/models/paper.rb class Paper < ActiveRecord::Base has_and_belongs_to_many(:authors) end
と
# app/models/author.rb class Author < ActiveRecord::Base has_and_belongs_to_many(:papers) end
でリレーションが完成. paper.authors や author.papers では配列が返されるようになる.
あとは view の設定だけかな. 楽だわー Rails.
_ ライド・オン・Rails
購入してました. 巷に出た Rails 本は全て購入した事になりますね(馬鹿).
AWS との連携も書いてあったりして便利です. この本
吉田 和弘, ソフトバンククリエイティブ, ¥3,278