私はその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を使用する必要がありますか?