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 に答える