每個度假村都有很多下雪報告。 我想獲取每個度假村的最新的雪情報告,其中表snow_reports中的字段snow_summit應該> 0。獲取最新的獨特記錄
所以我試着選擇不同的resort_id,這是snow_reports中的fkey和updated_at的順序,但這是不可能的,因爲updated_at不會出現在select中。
那麼,如何只獲取rails4(在postgres上)關聯模式的最新記錄?
SnowReport belongs_to Resort
Resort has_many snow_reports
Table snow_reports has id,resort_id,updated_at,snow_summit
理想情況下,結果會因性能原因而加入。
我的方法失敗
SnowReport.includes(:resort).select(:resort_id).group(:resort_id).having('max(snow_summit)> 0').order('max(snow_reports.updated_at) DESC')
因爲SnowReport.id是零
#<ActiveRecord::Relation [#<SnowReport id: nil, resort_id: 1735>, ...
編輯:
我發現在普通的SQL的解決方案。 我該如何將它轉換爲rails?
select * from resorts where id in (select distinct(resort_id) from snow_reports where snow_summit > 0 and created_at > (now()- interval '3 days')
and created_at in (select max(created_at) from snow_reports group by resort_id));
你有這樣的規格記錄在表 – Gowri 2014-11-21 07:01:31