Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获取最新的不同记录_Ruby On Rails_Postgresql_Rails Activerecord - Fatal编程技术网

Ruby on rails 获取最新的不同记录

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

每个度假胜地都有许多降雪报告。 我想获取每个度假村的最新雪报告,其中表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
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)