【问题标题】:Undefined method `+' on Heroku RoR applicationHeroku RoR 应用程序上的未定义方法“+”
【发布时间】:2012-05-06 23:47:20
【问题描述】:

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

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

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

NoMethodError(nil:NilClass 的未定义方法 `+')

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 heroku


    【解决方案1】:

    如果您将数字作为属性存储在数据库中,则应将默认状态设置为 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
    

    【讨论】:

    • 也许应该为 CurrentUser 类做这件事?我很困惑
    • 通常 current_user 是身份验证的助手,它是那里的用户实例。尝试调用 current_user.class 你应该得到 User 类。
    【解决方案2】:

    你也可以这样做:

    @user.number = current_user ? current_user.to_i : 0
    @user.save!
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多