如何连接表只获得has-many关联的最后一条记录?

时间:2016-02-16 19:14:05

标签: ruby-on-rails activerecord

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

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

但是,我想在此查询中仅包含最后一个事务。因此Company.joined_transactions.first.current_balance == Company.first.transactions.last.balance应该是真的。

2 个答案:

答案 0 :(得分:1)

子查询.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)')

答案 1 :(得分:-1)

我相信这个问题已经解决过很多次了。您可以使用subquerydouble join

执行此操作

如果这对您不起作用,请在当前案例中添加更多信息