CDテーブルは次のようになります。
cd.dogtag (primary key)
...
cd_tracks持っているidとtracks(トラック名)、例:
1 Turd On The Run
cd_tracks2titleCDテーブルとテーブルから多対多を結合するためのルックアップテーブル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.durationcd_tracks2title.position
理想的には、トラック名を取得できるようにこの関連付けを保持しますが、正しい情報を取得するには、と値の両方を使用cd_tracks2titleするテーブルを介して、CDテーブルからテーブルへの別の関連付けが必要になります。cd_trackscd.dogTagcd_tracks.id
もちろん、以前はクエリでMysql JOINを明示的に書き出すことでこれをすべて行っていましたが、Railsアソシエーションを作成したいと思います。