我有一个 ActiveRecord 查询,它会拉出一个随机选择的 Matchup 对象,其中比赛中的任何一名球员都不是当前对手名字为“Bye Week”的球队。
型号定义:
Matchup 有两个字段,player_1 和 player_2,它们是 Player 对象的 ID。
每个玩家都属于_to Team,它有几个字段,例如,converter_week_1、converter_week_2 ...对手_week_17。
current_week 根据今天的日期返回一个介于 1 和 17 之间的整数(它决定了我们当前处于 NFL 赛季的哪一周)。
现在我正在这样做,但我想删除循环,并只使用一个查询来随机选择一个满足条件的对象:
def getRandomMatchup
current_week = view_context.current_week
matchup = Matchup.order("RANDOM()").first
opponent1 = Team.find(Player.find(m.player_1).team.send("opp_week_#{current_week}")).name
opponent2 = Team.find(Player.find(m.player_2).team.send("opp_week_#{current_week}")).name
while opponent1 == "Bye Week" || opponent2 == "Bye Week"
matchup = Matchup.order("RANDOM()").first
opponent1 = Team.find(Player.find(matchup.player_1).team.send("opp_week_#{current_week}")).name
opponent2 = Team.find(Player.find(matchup.player_2).team.send("opp_week_#{current_week}")).name
end
return matchup
end
我的想法是做这样的事情,但我不确定如何正确执行它:
m = Matchup.where.not(Team.find(Player.find(m.player_1).team.send("opp_week_#{current_week}")).name: "Bye Week",
Team.find(Player.find(m.player_2).team.send("opp_week_#{current_week}")).name: "Bye Week").order("RANDOM()").first
我正在使用 Ruby 2 和 Rails 4。