我有一个有几个参数的游戏模型,其中包括一个名为'转'的整数参数。和对手'参数。当玩家加入游戏时,我想更新2个属性:(1)属性'对手',(2)属性'转')。
我使用下面的代码:
# in games_controller.rb
def update
@game = Game.find(params[:id])
owner = @game.owner.id.to_i
@game.update_attribute(:opponent, current_user)
@game.update_attribute(:turn, owner)
end
问题是,当opponent属性确实更新时,turn属性仍为零。当我在控制台中使用此代码时,@game.update_attribute(:turn, owner)
会返回true
,但仍然无法更新。知道为什么会这样吗?感谢。
注意:我确实已转入我的game_params
答案 0 :(得分:0)
你正在更新:转身和:对手。在一种情况下,您使用ID owner.id
。在另一种情况下,您使用活动记录对象current_user
。我认为:转弯不是人的身份,而是关联的模型,所以你应该使用owner = @game.owner
。
您还可以使用单个更新:
def update
@game = Game.find(params[:id])
@game.update_attributes(:opponent => current_user, :turn => @game.owner)
end