簡體   English   中英

在Ruby中,減量(-=)函數在0處停止

[英]Having a decrement (-=) function stop at 0 in Ruby

我有以下代碼行,當他們將股票出售給其他人時,它們非常簡單地減少股東的股票數量(數據庫中的整數)。 效果很好,符合預期。

@selling_shareholder.update_attribute(:number_of_stocks, @selling_shareholder.number_of_stocks -= @transaction.number_of_stocks)

很簡單,我想做的就是當number_of_stocks達到0時停止遞減函數,即不可能有負數。

我想我可以用一個簡單的unless @selling_shareholder.number_of_stocks > 0在該行的末尾,但我不知道這是否會真正不使用循環工作?

我建議在您的模型中創建一個名為#decrement_stock來處理該邏輯。 您可以設置所有應有的行為,例如引發異常。 該方法遵循“ 告訴不問 ”的原則。 它也是執行單個任務的簡單工作單元,因此可以輕松使用自己喜歡的單元測試框架進行測試。

正如工程師的建議一樣,如果您希望控制器處理錯誤,則只需在模型上添加驗證也是一個很好的解決方案。

暫無
暫無

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

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