未定义的方法'<'为零:NilClass

时间:2016-08-09 16:24:44

标签: ruby-on-rails

Rails向我提出了上述错误,在我的一个模型中指向了这个函数:

def is_failed?
  self.daily_post < (Time.now.utc.in_time_zone('Europe/London').beginning_of_day - 1.day)
end

daily_post是我的表格中的一个:datetime方法。起初我认为它可能是一个日期/日期时间问题,但这并没有解决它。

  create_table "pledges", force: :cascade do |t|
t.string   "name"
t.text     "description"
t.integer  "amount"
t.integer  "user_id"
t.integer  "category_id"
t.datetime "created_at",  null: false
t.datetime "updated_at",  null: false
t.datetime "daily_post"
t.integer  "sponsor_id"
t.index ["category_id"], name: "index_pledges_on_category_id", using: :btree
t.index ["user_id"], name: "index_pledges_on_user_id", using: :btree
end

控制器:

def checkin
@pledge = Pledge.find(params[:id])

if @pledge.is_failed?
  ## pledge is over!
  flash[:danger] = "Pledge failed!"
else
  @pledge.update(daily_post: Time.now.utc)
  flash[:success] = "Checked in!"
end

redirect_to @pledge
end

提前感谢您的时间。

2 个答案:

答案 0 :(得分:0)

试试这个:

InterruptedException

答案 1 :(得分:0)

感谢您的回答,我设法解决了问题。

问题在于,当创建模型的新实例时,:daily_post没有被赋予值。所以我把它添加到Pledge模型中:

  def first_checkin
    if self.daily_post == nil
      self.daily_post = self.created_at
    end
  end

再次感谢!