Railsは私のモデルの一つで、この関数を指して、私に上記のエラーを投げている:モデルのための私のテーブルの日時法:未定義のメソッド「<」nilのために:NilClass
def is_failed?
self.daily_post < (Time.now.utc.in_time_zone('Europe/London').beginning_of_day - 1.day)
end
daily_postです。最初は日付/日時の問題かもしれないと思っていましたが、それは修正されませんでした。
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メソッドを共有できますか?何とかnilを返します。 pryを使ってデバッグし、コンソールでself.daily_postを手動で呼び出してみてください。 –
私は、私のポスト、Subhashにもっと詳細を入れました。お返事をありがとうございます。 –
'self.daily_post'という文はこの場合は' nil'を返し、Rubyは未定義のメソッドである 'nil'に対して' <'を呼び出そうとします。 'self.daily_post'が' nil'のときにはtrueかfalseを返す必要があります。 – MrYoshiji