我有这些模型 - Sport
和Match
。一个Sport
has_many :matches
而Match
belongs_to :sport
。
Sport
有一个字段hours_before_inactive
,这是匹配开始后的几个小时,它在系统中被视为非活动状态,而匹配则知道它何时通过字段:starts_at
我如何随时查询所有有效比赛?活动记录或直接sql(Mysql)都可以。如果可能,最好是1个查询。
答案 0 :(得分:0)
对于初学者来说,放弃hours_before_inactive
它应该根据now()
的日期数学函数动态计算答案 1 :(得分:0)
这可能会对您有所帮助:
Match.includes(:sport).where("starts_at BETWEEN Now() AND NOW() + INTERVAL sports. hours_before_inactive HOUR")
确保使用mysql和rails服务器的时区
答案 2 :(得分:-1)
这应该有效
Match.where('starts_at BETWEEN '#{time}' AND DATE_ADD('#{time}, INTERVAL 2 HOUR)')