我遇到了stack level too deep
一个无限循环,但我不知道为什么,所以我希望其他人能发现它。
我的游戏模型中有这个方法:
def self.record_win_or_tie(game_id)
game = Game.find(game_id)
if game.home_team_score > game.away_team_score
game.home_team_won = true
game.save
end
end
当我从控制台为条件为真的游戏运行它时(即game.home_team_score 大于game.away_team_score),如果一遍又一遍地运行相同的查询。
SELECT `games`.* FROM `games` WHERE `games`.`id` = 1 LIMIT 1
如果我为条件为假的 game_id 运行代码,则查找游戏的查询只发生一次,并且没有无限循环。
* 更新 *
我发现问题在于我从我的 GameObserver 调用该方法:
class GameObserver < ActiveRecord::Observer
def after_save(game)
Game.record_win_or_tie(game.id)
end
end
但是,我不知道如何调整我的代码。要求是自动更新game.home_team_won
或game.away_team_won
在某人更新game.home_team_score
或之后自动更新game.away_team_score
。
看来我不能使用观察者来做到这一点。