我有一个Unit
模型has_many :transacions
。交易有一个type
列表明它是什么类型的交易:销售、转让、预订等。
我想找到所有具有给定交易类型的单位作为他们的最新交易。我不知道如何在 ActiveRecord 中做到这一点。
在 SQL 中,例如,如果我想查找所有以“Transfer”为最新交易的单位,我可以这样做:
SELECT u.*, tx.* FROM units u INNER JOIN transactions tx ON u.id=tx.unit_id
INNER JOIN
(
SELECT tx.unit_id, max(tx.created_at) AS latest_tx_date
FROM transactions tx
GROUP BY tx.unit_id
ORDER BY tx.unit_id
) max_dates
ON (tx.unit_id=max_dates.unit_id AND tx.created_at>=max_dates.latest_tx_date)
WHERE tx.type='Transfer';
这是我遇到问题的内部查询的加入。是否有可读的 ActiveRecord 方法来执行此操作,或者我应该只使用 SQL 吗?