最近のトラックバック

Twitter

楽天

« 3/4 UNIFLAME トレイルスプーン Ti | トップページ | ldapsearchでActiveDirectoryを検索する。 »

[rails]関連(多対多)

多対多の関連を表現する場合、この関連を取り持つテーブル(結合テーブル)が別途必要。

モデル定義では、主従関係はないので、お互いに「has_and_belongs_to_many」を定義する。

例:clubsテーブルと、studentsテーブルが多対多で関連している場合。

clubsテーブルのカラム
    id,name
studentsテーブルのカラム
    id,name
clubs_studentsテーブルのカラム
    clubs_id,students_id

    関連を取り持つテーブルとして関連するテーブル名を"_"でつないだ名前を定義。(つなぐ順番は辞書順)
  カラムを関連するテーブル名+"_id"を設定する。

 

    そして、clubsのモデルは以下のように記述

class Club < ActiveRecord::Base

    has_and_belongs_to_many :students

end

    students側はこう

class Studnet < ActiveRecord::Base

    has_and_belongs_to_many :school

end

 これで、clubs側のコントローラ等で"students"の名前でstudentsテーブルを参照できるし、

   students側からは"clubs"の名前でclubsテーブルを参照できるようになる。

また、使用できるメソッド等はhas_meny(1対多)と同じ。

« 3/4 UNIFLAME トレイルスプーン Ti | トップページ | ldapsearchでActiveDirectoryを検索する。 »

ruby/rails」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: [rails]関連(多対多):

« 3/4 UNIFLAME トレイルスプーン Ti | トップページ | ldapsearchでActiveDirectoryを検索する。 »

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ