У меня есть система со следующими моделями
class Application < ApplicationRecord
has_many :offers, dependent: :destroy
belongs_to :accepted_offer, class_name: 'Offer',
foreign_key: 'accepted_offer_id',
optional: true
class Offer < ApplicationRecord
belongs_to :application
, и я создавал отчет, который собирает все предложения по accepted_offer_id
, как, например,
Application.find_each do |app|
offer = Offer.find(app.accepted_offer_id) if app.accepted_offer_id
report.push(report_body(app, offer))
end
Этостановясь слишком медленным, я хотел бы переписать бит отчета так, чтобы он использовал левое соединение, чтобы установить соединение с одиночным запросом к БД.
Я хотел бы, чтобы запрос возвращал все предложения, которые хранятсякак accepted_offer_id
в таблице приложений.
Offer.left_outer_joins(:applications).where(id: { 'application.accetped_offer_id' })
Я знаю, что вышеприведенное неверно, но я уверен, что можно получить коллекцию одним запросом?