簡體   English   中英

rails:nil:NilClass的未定義方法“>”

[英]rails : undefined method `>' for nil:NilClass

我是Rails的初學者,我需要在控制器上比較2 DateTime:

@b = Book.find(params[:book][:id])
if @b.expiry_date > DateTime.now
  ... something here ...
end

但是我得到這個錯誤:

undefined method `>' for nil:NilClass

有人知道為什么嗎?

運算符是ruby中的方法,因此您undefined method '>' for nil:NilClass錯誤,表明此行上@b.expiry_date為nil: if @b.expiry_date > DateTime.now

如果存在@b.expiry_date則可以使用短路邏輯來評估條件。

if @b.expiry_date && (@b.expiry_date > DateTime.now)

if表達式僅在&&兩面也都為true時才為true,因此如果第一個條件@b.expiry_date為false或nil,則(@b.expiry_date > DateTime.now)將不會執行。

否則,您將需要添加邏輯/驗證以確保存在expiry_date

只需在if語句中添加一條檢查記錄是否為nil的檢查,如下所示:

    @b = Book.find(params[:book][:id])
      if !@b.expiry_date.nil? && @b.expiry_date > DateTime.now
      ... something here ...
    end

如果所有書籍都應具有有效期限,則應添加一個驗證,要求在您的書籍模型中創建/更新書籍記錄時,必須包括有效期限!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2025 STACKOOM.COM