-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2010年01月15日

has_many :throughで多対多のリレーション

3つのテーブルを作成。 % ./script/generate model entry title:string content:text % ./script/generate model category name:string % ./script/generate model category_entry category_id:integer entry_id:integer % rake db:migrate 3つのファイルを編集 *********************************************** [FILENAME] app/models/category.rb *********************************************** class Category < ActiveRecord::Base has_many :category_entries, :dependent => :destroy has_many :entries, :through => :category_entries end *********************************************** [FILENAME] app/models/category_entry.rb *********************************************** class CategoryEntry < ActiveRecord::Base belongs_to :entry belongs_to :category end *********************************************** [FILENAME] app/models/entry.rb *********************************************** class Entry < ActiveRecord::Base has_many :category_entries, :dependent => :destroy has_many :categories, :through => :category_entries end  単数形と複数形の使い分けに注意。 実行例:( ./script/console) >> e = Entry.new => # >> e.title="AAAAAA" => "AAAAAA" >> c=Category.new => # >> c.name="Rails" => "Rails" >> c.save => true >> e.categories << c => [#] >> c2=Category.new => # >> c2.name="Ruby" => "Ruby" >> c2.save => true >> Category.find(:all) => [#, #, #, #] >> e.categories << Category.find(4) => [#, #] >> e.categories => [#, #] >> e.categories.each do |d| ?> puts d.name >> end Rails Ruby => [#, #] >>

Powered by ScribeFire.

posted by hirono at 01:13| Comment(0) | TrackBack(0) | Rails
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/34749691

この記事へのトラックバック