私は次の2つのモデルを持っています:
class Schedule < ActiveRecord::Base
attr_accessible :description, :deadline_on, :repeat
has_many :scheduled_transactions
end
class ScheduledTransaction < ActiveRecord::Base
attr_accessible :transaction_on, :description
belongs_to :schedule
end
各スケジュールから最後にスケジュールされたトランザクションを見つけたい。私はできることを知っています:
Schedule.all.each do |schedule|
schedule.scheduled_transactions.order(:transaction_on).last
end
しかし、私はそれを最適化し、単一のデータベースを選択したいと考えています。
Railsクエリを構築しようとしました:
ScheduledTransaction.select('DISTINCT(schedule_id), scheduled_transactions.*').order('transaction_on DESC')
これは次のように翻訳されました:
SELECT DISTINCT(schedule_id), scheduled_transactions.* FROM "scheduled_transactions" ORDER BY transaction_on DESC
しかし、期待した結果は得られません。同じ schedule_id を持つ行が複数あります。
そして、私の目標は、スケジュールごとに最後にスケジュールされたトランザクションを含むスケジュールされたトランザクションのリストを選択することです。助言がありますか?
(PostgreSQL) 9.1.9