CDテーブルは次のようになります。
cd.dogtag (primary key)
...
cd_tracks
持っているid
とtracks
(トラック名)、例:
1 Turd On The Run
cd_tracks2title
CDテーブルとテーブルから多対多を結合するためのルックアップテーブルcd_tracks
です。しかし、それは私が取得したい情報も含んでいます:
cd_tracks2title.dogTag
cd_tracks2title.trackId
cd_tracks2title.duration
cd_tracks2title.position
の主キーcd_tracks2title
は、実際には2つの列です。
PRIMARY KEY (`dogTag`,`trackId`)
また、内部のデータは次のcd_tracks2title
ようになります。
1 4 NULL NULL 3:24 11
問題は、これら2つのプライマリ列を使用してCDテーブルからcd_tracks2titleへのRailsの関連付けを確立しようとしていることですが、方法がないようです。
私がこれを行う場合:
# cd_track.rb
has_and_belongs_to_many :cd, :join_table => 'cd_tracks2title', :foreign_key => 'trackId', :association_foreign_key => 'dogTag'
#cd.rb
has_and_belongs_to_many :cd_track, :join_table => 'cd_tracks2title', :foreign_key => 'dogTag', :association_foreign_key => 'trackId'
これで問題ありません。トラック名はのようなもので取得できますが、単純なルックアップテーブルであるため、情報Cd.first.cd_track
を取得する方法がありません。cd_tracks2title.duration
cd_tracks2title.position
理想的には、トラック名を取得できるようにこの関連付けを保持しますが、正しい情報を取得するには、と値の両方を使用cd_tracks2title
するテーブルを介して、CDテーブルからテーブルへの別の関連付けが必要になります。cd_tracks
cd.dogTag
cd_tracks.id
もちろん、以前はクエリでMysql JOINを明示的に書き出すことでこれをすべて行っていましたが、Railsアソシエーションを作成したいと思います。