EntryとTagというモデルがあって、Entryには複数のTagを付けることができ、あるTagが付いたEntryが複数あるとき。つまり、多対多の関係があるとします。このような場合データベース上は、entriesテーブルとtagsテーブルと、その関連を記録するtaggingsテーブルを用意しますね。taggingsテーブルに対応するtaggingモデルを用意します。 で、モデルを定義する時に、has_many :throughを使うと便利。 class Entry < ActiveRecord::Base has_many :taggings has_many :tags, :through=>:taggings end class Tag < ActiveRecord::Base has_many :taggings has_many :entries, :through=>:taggi
今やってる RailsWorkShopの課題では、テーブルが多対多の関連を持っていいます。このへんの知識は無かったので、昨日、じっくりと学習してみました。 課題のテーブル構造 events: 出来事 tags: 出来事に付けるタグ taggings: 出来事とダグの関連(交差テーブル) RailsのActiveRecordは多対多関連も扱えますが、2つの方法があります。 1. has_and_belongs_to_many (略して habtm) この方式では交差テーブルの面倒は全てActiveRecordが見てくれます。ただし、交差テーブルには2つのテーブルのid以外のカラムは持てません。単純に多対多を実現した場合はこの方式は便利です。 2. has_many :throw この方式は交差テーブルを介して一対多のテーブルがあるような扱いで、交差テーブルを介しての参照(select,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く