Рельсы бросают мне вышеуказанную ошибку, указывая на эту функцию в одной из моих моделей:Неопределенный метод «<» для ноля: NilClass
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
Заранее спасибо за ваше время.
Можете ли вы поделиться своим методом daily_post, это как-то возвращает нуль. Попробуйте отладить его с помощью pry и вызовите self.daily_post вручную на консоли. –
Я добавил несколько статей в свой пост, Субхаш. Спасибо за ваш ответ. –
В этом случае утверждение 'self.daily_post' возвращает' nil', а затем Ruby пытается вызвать '<' on 'nil', что является неопределенным методом. Вы должны справиться с ситуацией, когда 'self.daily_post' является' nil', либо возвращает true, либо false. – MrYoshiji