2013-09-20 3 views

ответ

0

Это намного проще, если вы сгибаете соглашения Rails для плюрализующих и заглавных имен.

Тогда, если table1 действительно foos и table2 является bars, соответствующий Active Record Foo и Bar, деклараций, вы хотите

belongs_to :foo 

в Bar записи. Это соответствует внешнему ключу foo_id. Затем добавьте сопоставление

has_many :bars 

в записи Foo. Это позволяет получить все записи bars, которые ссылаются foo на foo.bars. При всем этом на месте запрос будет

Foo.join(:bar).select(:value_1, :value_2, :value_3) 
    .where('bars.table3_id = ?, table3_id_value) 

Можно переопределить соглашения по умолчанию для имен таблиц и внешних ключей. Посмотрите правильные варианты в the Active Record query documentation.

+0

спасибо за отзыв! Поэтому я просто немного модифицировал версию вашего предложения (нужно было добавить скобки вокруг значений выбора и «от» до «бара»), и только два из трех значений выбора были возвращены (один из трех не из Foo). Есть идеи? – Drew

+1

Интерфейс соединения Active Record не позволяет получить доступ к полям объединенной записи. Вы должны использовать один из вызовов более низкого уровня. – Gene

+0

Ahh большое вам спасибо! – Drew

Смежные вопросы