我的 Rails 2.3 应用程序中有一个复杂的数据库模式。在某些时候,我需要通过连接多个表来进行查询以从多个列中检索数据。有一个表我总是需要通过它来检索我需要的数据。
当我尝试使用 Rails 语法进行连接时,问题就来了。我发现没有办法让 rails 一次又一次地跳过加入同一张桌子。
假设我有这个表关系:
A=>B=>C=>D=>E=>F
A=>B=>F=>G
A=>B=>F=>H
A=>I
如您所见,B 是我多次“加入”以获取所需表的表。
我的查询看起来像这样:
A.all( :select=>"SOME DATA FROM F, G, H AND I",
:joins=>[{{{{:B=>:C}=>:D}=>:E}=>:F}, {{:B=>:F}=>:G}, {{:B=>:F}=>:H}, :I],
:conditions=>{"SOME CONDITIONS"
}
)
您可以看到我使用哈希语法来指定连接。
问题是,当我查看 rails 创建的连接时,我发现它连接了 B 3 次。我希望它足够聪明,只做一次然后从那里开始,但我想可能会有你想加入几次的情况。
我的问题是,我怎样才能使用 rails 2.3.8 语法使生成的查询只加入 B 一次。在 :belongs_to :throug 类型的模型中添加额外的关系对我来说不是一个选择