我有战斗类,有很多参与者。我正在使用这个类方法返回最后一场投票:
def self.get_voteable_battle
#return the battle whose submissions_deadline ended less than 3 days ago
time_now = Time.now
end_of_day = time_now.end_of_day
return self.where(:submissions_deadline => end_of_day.ago(3.days)..time_now).first
end
但我也想确保至少有2名参与者。
我可以添加另一个这样的条件:
def self.get_voteable_battle
#return the battle whose submissions_deadline ended less than 3 days ago
time_now = Time.now
end_of_day = time_now.end_of_day
battle = self.where(:submissions_deadline => end_of_day.ago(3.days)..time_now).first
if battle && battle.participants.count > 1
return battle
else
return nil
end
end
但这需要另一个查询吗?有没有办法在使用活动记录的一个查询中执行此操作?
答案 0 :(得分:0)
你可以尝试
self.joins(:participants).where(:submissions_deadline => end_of_day.ago(3.days)..time_now).having('count(participants.id) > ?', 1).last
它可能是having
子句中的战斗ID,但其中一个会起作用,我会更新。头疼了。