模型update_attributes方法返回' true',但实际上没有更新属性

时间:2018-03-17 10:58:15

标签: ruby-on-rails ruby activerecord rails-activerecord

我有一个有几个参数的游戏模型,其中包括一个名为'转'的整数参数。和对手'参数。当玩家加入游戏时,我想更新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

1 个答案:

答案 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