我正在用 Ruby-On-Rails 开发一个小型应用程序。在控制器中,我有这段代码:
@user = User.find(current_user.id)
@user.number = current_user.number + 1
@user.save!
虽然它在本地运行没有问题,但它在第二行的 Heroku 上崩溃,并出现以下错误:
NoMethodError(nil:NilClass 的未定义方法“+”)
有关如何解决问题的任何提示?
我正在用 Ruby-On-Rails 开发一个小型应用程序。在控制器中,我有这段代码:
@user = User.find(current_user.id)
@user.number = current_user.number + 1
@user.save!
虽然它在本地运行没有问题,但它在第二行的 Heroku 上崩溃,并出现以下错误:
NoMethodError(nil:NilClass 的未定义方法“+”)
有关如何解决问题的任何提示?
如果将数字作为属性存储在数据库中,则应将默认状态设置为 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
你也可以这样做:
@user.number = current_user ? current_user.to_i : 0
@user.save!