我正在Ruby-On-Rails中开发一个小应用程序。在控制器中我有这段代码:
@user = User.find(current_user.id)
@user.number = current_user.number + 1
@user.save!
虽然它本地运行没有问题,但它在第二行的Heroku上崩溃,出现以下错误:
NoMethodError(未定义的方法`+'代表nil:NilClass)
有关如何解决问题的任何提示?
答案 0 :(得分: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
答案 1 :(得分:1)
您也可以这样做:
@user.number = current_user ? current_user.to_i : 0
@user.save!