我正在Rails 4.2.2和Ruby 2.2.2中構建一個簡單的資產管理器應用程序。在我asset
模型我使用一個回調與before_create
調用一個函數generate_asset_number
像這樣未定義的方法`拆分'爲零:NilClass Rails
def generate_asset_number
company = "AMS"
if Asset.count == 0
self.asset_number = "#{company}-00001"
else
last = Asset.last.asset_number
end
number = last.split('-')[1].to_i
number += 1
self.asset_number = company + '-' + "%05d" % number
end
end
正如你可以看到我設置公司變量作爲字符串,評估如果Asset.count爲0,那麼返回字符串「AMS-00001」,如果Asset.count不是0,那麼我將最後一個賦值給Asset.last.asset_number以獲取序列中的最後一個數字。
在哪裏我得到了絆倒是設置數字變量返回最後的事件號碼和調用分裂它提取數組的第二部分,並轉換爲整數,所以我可以增加它。
當我運行這個從控制檯或嘗試在視圖中創建一個新的記錄,我得到以下錯誤:
undefined method
分裂」的零:NilClass`
我敢肯定,我的語法因爲我更像是一個Ruby Jr.
如果有人可以幫助解釋我需要做什麼來重構並完成這項工作,我會很感激。如果您需要更多信息或者如果我的問題不清楚,請告訴我。
這很好,對不起,這對我來說很早,我犯了新錯誤。我在過渡期間重構了類似於您的答案的東西,但它使用了額外的if語句。所以這更清潔!非常感謝<3 – nulltek