2015-05-17 2 views
1

Есть ли способ получить этот SQL-запрос с помощью синтаксиса запроса ActiveRecord?Rails Active Records Несколько соединений

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; 
+0

http://stackoverflow.com/a/16131467/429758 должен быть полезным. –

ответ

0

Я хотел бы начать с прочтения этого: http://guides.rubyonrails.org/association_basics.html и создание таблиц с именами, которые так или иначе представляют данные, которые вы работаете. Создайте классы моделей миграции с соответствующими ассоциациями и вернитесь и обновите свой вопрос.

1

Проблема с вашим запросом заключается в том, что вы основываетесь на таблицах базы данных с именем , а не на соглашение Rails о наличии множественных имен таблиц. Я могу привести пример похожий на ваш, это выглядит следующим образом:

Universe.joins(
    galaxies: { 
    stars: { 
     planets: { 
      molecules: :atoms 
     } 
    } 
    } 
).where(atoms: {id: 5}) 

И этот запрос предполагает у вас есть модели:

  • Universe что has_many :galaxies
  • Galaxy что has_many :stars и belongs_to :universe (как, например, имеет universe_id)
  • Star что has_many :planets и belongs_to :galaxy
  • Planet что has_many :molecules и belongs_to :star
  • Molecule что has_many :atoms и belongs_to :planet
  • Atom ... просто belongs_to :molecule
Смежные вопросы