如何连接表以仅获取多关联的最后一条记录?

yza*_*vin 3 activerecord ruby-on-rails

我有两个模型:公司和交易(具有多关系)。交易模型具有balance属性。我有一个加入模型的查询:

scope :joined_transactions, (lambda do
  select('transactions.balance as current_balance')
  .joins('LEFT OUTER JOIN transactions ON transactions.company_id = companies.id')
end)
Run Code Online (Sandbox Code Playgroud)

但是,我只想将最后一笔交易包含到该查询中。结果Company.joined_transactions.first.current_balance == Company.first.transactions.last.balance应该是真的。

小智 6

子查询.joins('left join transactions t on t.company_id = companies.id AND t.id = (SELECT MAX(id) FROM transactions WHERE transactions.company_id = t.company_id)')