Ruby on rails 获取最新的不同记录
每个度假胜地都有许多降雪报告。 我想获取每个度假村的最新雪报告,其中表snow_reports中的field snow_summit应大于0 因此,我尝试在resort_id上选择distinct,这是snow_报告中的fkey,并按更新的_at订购,但这是不可能的,因为更新的_at不会出现在select中 那么,如何在postgres上仅获取rails4中关联模式的最新记录呢Ruby on rails 获取最新的不同记录,ruby-on-rails,postgresql,rails-activerecord,Ruby On Rails,Postgresql,Rails Activerecord,每个度假胜地都有许多降雪报告。 我想获取每个度假村的最新雪报告,其中表snow_reports中的field snow_summit应大于0 因此,我尝试在resort_id上选择distinct,这是snow_报告中的fkey,并按更新的_at订购,但这是不可能的,因为更新的_at不会出现在select中 那么,如何在postgres上仅获取rails4中关联模式的最新记录呢 SnowReport belongs_to Resort Resort has_many snow_reports T
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>, ...
试试这个:
SnowReport.includes(:resort).select(:id, :resort_id).where("snow_summit > ?", 0).order("updated_at DESC").group(:resort_id)
这可能有用 在您的表格中是否有此类规格的记录?例如,snowreport\u id是nil@dc10您能将输出发送给我吗?雪地报告。包括:度假酒店。选择:度假酒店id.wheresnow\u summit>?,0.orderupdated_at DESC SnowReport Load 3.5ms从snow_reports中选择snow_reports.resort_id,其中snow_summit>0 Orders BY updated_at DESC resort Load 1.1ms选择resorts.*从resorts WHERE resorts.id于1727年,…=>2.1.1:150>@Gwori稍等,我只是仔细检查了一下,我注意到没有明显的或群体的情况,所以SnowReport。包括:resort.select:id,:resort\u id.wheresnow\u summit>?,0.OrderUpdate\u在DESC结果中选择snow\u reports.id,snow_reports.resort_id来自snow_reports,其中snow_summit>0订单由DESC更新,返回所有ids@dc10我忽略了它,所以忘了添加组条件。请检查我的答案,我编辑了它。
SnowReport.includes(:resort).select(:id, :resort_id).where("snow_summit > ?", 0).order("updated_at DESC").group(:resort_id)