我希望得到所有未满的游戏,即表中有空位。
可用的点数是我的模型游戏的nplayer
属性。
我有一个助手来获取游戏中已有的当前number_of_players:number_of_players(game)
我正在尝试以下内容来展示有空间的游戏:
@opengames = Game.where("nplayer > ?", number_of_players(***game***))
我的问题是:我应该在我的助手number_of_game(xxxx)中使用什么。
我怎么知道。在哪里检查它试图找到的游戏?是否有可能或者我应该获得所有游戏,而不是逐一比较?像:
@opengames = []
@games = Game.all
@games.each do |game|
if game.nplayer > number_of_players(game)
@opengames.push game
end
end
(对不起,如果我的解释不清楚......英语不是我的母语)
答案 0 :(得分:1)
您可以尝试select
@opengames = Game.all.select { |game| game.nplayer > number_of_players(game) }
但是,如果只能在db级别执行number_of_players
,它会更清晰。例如,如果游戏和套牌相关联,您可以执行
Game.where("`games`.`nplayer` > (SELECT COUNT(*) FROM `decks` WHERE `decks`.`game_id` = `games`.`id`)")