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
问题是我正在尝试使用这两个主要列建立从 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 表到cd_tracks2title
表的另一个关联,通过cd_tracks
使用cd.dogTag
和cd_tracks.id
值的表来获取正确的信息。
当然,我曾经通过在查询中显式写出 Mysql JOIN 来完成所有这些操作,但我想创建 Rails 关联。