Это намного проще, если вы сгибаете соглашения 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.
спасибо за отзыв! Поэтому я просто немного модифицировал версию вашего предложения (нужно было добавить скобки вокруг значений выбора и «от» до «бара»), и только два из трех значений выбора были возвращены (один из трех не из Foo). Есть идеи? – Drew
Интерфейс соединения Active Record не позволяет получить доступ к полям объединенной записи. Вы должны использовать один из вызовов более низкого уровня. – Gene
Ahh большое вам спасибо! – Drew