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表建立一个Rails关联到cd_tracks2title使用这2个主要列,但似乎没有办法。
如果我这样做:
# 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.dogTag
和cd_tracks.id
值,以获得正确的保持这种关联,所以我仍然可以得到的曲目名称,但需要从CD表到cd_tracks2title
表另一个关联,通过cd_tracks
表信息。
当然,我曾经通过明确写出查询中的Mysql JOIN来完成所有这些工作,但是我想创建Rails关联。
真的,没办法做到这一点?甚至没有宝石? – kakubei 2012-09-12 15:33:56