2013-05-28 22 views
0

我有擁有許多參與者的戰鬥類。我正在使用此類方法返回最後一次對戰表決:如何指定使用活動記錄的關聯的最小數量

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

你可以嘗試

self.joins(:participants).where(:submissions_deadline => end_of_day.ago(3.days)..time_now).having('count(participants.id) > ?', 1).last 

它可能是戰鬥ID的having子句中,但兩人的一會工夫,我會更新。頭部現在疼。

相關問題