0

我正在用 Ruby-On-Rails 开发一个小型应用程序。在控制器中,我有这段代码:

@user = User.find(current_user.id)
@user.number = current_user.number + 1
@user.save!

虽然它在本地运行没有问题,但它在第二行的 Heroku 上崩溃,并出现以下错误:

NoMethodError(nil:NilClass 的未定义方法“+”)

有关如何解决问题的任何提示?

4

2 回答 2

3

如果将数字作为属性存储在数据库中,则应将默认状态设置为 0。

创建新的迁移并重新生成数字列。

def change
  remove_colum :users, :number
  add_column users, :number, :integer, :default => 0

  #ensure that all users with number == nil have got 0 instead nil 
  User.where(:number => nil).update_all(:number => 0)
end
于 2012-05-06T15:16:52.950 回答
1

你也可以这样做:

@user.number = current_user ? current_user.to_i : 0
@user.save!
于 2012-05-06T15:47:20.393 回答