加入过滤掉特定记录的where子句,rails活动记录

时间:2016-08-09 07:44:24

标签: ruby-on-rails ruby sqlite activerecord

我正在制作一个包含联盟和活动的体育应用程序,这些活动包含league_id,联盟有namecountry_name。如何在今天的开始日期以及联赛名称和国家/地区获得所有比赛。

我试过了:

League.joins(:events).where(events: {event_start: Time.zone.now..Time.zone.now.end_of_day})

但是这会让所有今天有联赛的联赛回归,当时我试图访问特定联赛中的赛事,所有赛事都包括在内,而不仅仅是今天的格子赛事。

2 个答案:

答案 0 :(得分:2)

Event开始,并包含相关League以避免N + 1问题。

Event.includes(:league).where(event_start: Time.zone.now..Time.zone.now.end_of_day)

答案 1 :(得分:1)

要获取今天开始日期的所有活动,我认为您需要在beginning_of_day和end_of_day之间进行搜索

Event.includes(:league).where(event_start: Time.zone.now.beginning_of_day..Time.zone.now.end_of_day)

Event.includes(:league).where("event_start >= ? && event_start <= ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day)