Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Rails语法多次高效地连接同一个表_Ruby On Rails_Database_Join_Rails Activerecord - Fatal编程技术网

Ruby on rails 使用Rails语法多次高效地连接同一个表

Ruby on rails 使用Rails语法多次高效地连接同一个表,ruby-on-rails,database,join,rails-activerecord,Ruby On Rails,Database,Join,Rails Activerecord,我的Rails 2.3应用程序中有一个复杂的DB模式。在某个时候,我需要进行查询,通过连接多个表从多个列检索数据。有一个表,我总是需要通过它来检索我需要的数据 当我尝试使用Rails语法进行连接时,问题就出现了。我没有办法让rails一次又一次地跳过加入同一个表 假设我有一个表关系: A=>B=>C=>D=>E=>F A=>B=>F=>G A=>B=>F=>H A=>I 正如您所看到的,B是一个表,我多次“加入”以获得所需

我的Rails 2.3应用程序中有一个复杂的DB模式。在某个时候,我需要进行查询,通过连接多个表从多个列检索数据。有一个表,我总是需要通过它来检索我需要的数据

当我尝试使用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次。我希望它会足够聪明,只做一次,然后从那里开始,但我猜可能有一些情况下,你想加入几次

我的问题是,我如何使用Rails2.3.8语法使生成的查询只连接B一次。在类型为:bellings\u to:throut的模型中添加额外的关系对我来说不是一个选项

A.all(:joins => [:I, { :B => [{ :F => [:G, :H] }, {:C => { :D => { :E => :F }}}]}])