1

我有一个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 吗?

4

1 回答 1

0

ActiveRecord 支持单表继承。无需编写简单的 SQL。

于 2013-10-31T14:51:40.293 回答