Rails Active Records多个连接

时间:2015-05-17 01:10:20

标签: ruby-on-rails activerecord

有什么方法可以通过使用ActiveRecord查询语法来获取此SQL查询吗?

select t1.*
from
  t1
  join t2 on t1.id = t2.t1_id
  join t3 on t2.id = t3.t2_id
  join t4 on t3.id = t4.t3_id
  join t5 on t4.id = t5.t4_id
where t5.id = 5;

2 个答案:

答案 0 :(得分:1)

您的查询的问题在于您基于具有多个表名的每个Rails约定名为而不是的数据库表。我可以提供一个类似于你的例子,它看起来像这样:

foldtree f g a (Node label subtrees) = f label (foldr (g . foldtree f g a) a subtrees)

此查询假设您有模型:

  • Universe.joins( galaxies: { stars: { planets: { molecules: :atoms } } } ).where(atoms: {id: 5}) Universe
  • {li> has_many :galaxies Galaxyhas_many :stars(因此,有belongs_to :universe
  • universe_id Starhas_many :planets
  • belongs_to :galaxy Planethas_many :molecules
  • belongs_to :star Moleculehas_many :atoms
  • belongs_to :planet ...只是Atom

答案 1 :(得分:0)

我首先阅读:http://guides.rubyonrails.org/association_basics.html并创建名称以某种方式表示您正在使用的数据的表格。使用正确的关联创建迁移模型类,然后返回并更新您的问题。