如何确定最近的锦标赛,今天或过去,在Rails 6.0中至少有3个结果条目



我有两个模型:锦标赛,结果

class Tournament < ApplicationRecord
has_many :results
end
class Result < ApplicationRecord
belongs_to :tournament
end

我目前有以下实现"确定最近的比赛日期是今天还是过去";

last_tournament = Tournament.where("tournament_date <= ?", Date.today).order(tournament_date: :desc).limit(1)[0]

但是我想在此添加…"并且至少有3个结果条目"。其他主页代码取决于"last tournament"。如果它不试图在午夜时分分析尚未输入的数据,这会使它更容易。

我认为它会使用。joins()与Result和Tournament,但我认为我需要使用。count on Result,这让我失望,我很难想出一个解决方案。

可能是一个do循环,推出最后一个锦标赛的desc顺序,并使用if语句检查Result(锦标赛_id: x).count>= 3?对于这个解决方案,是否有一个简单的一行程序?

谢谢。

按比赛分组。

Tournament
.joins(:results)
.where(tournament_date: ..Date.today)
.order(tournament_date: :desc)
.group(:id)
.having(Result.arel_table[:id].count.gteq(3))
.limit(1)

最新更新