gpt4 book ai didi

ruby-on-rails - 在 Ruby 中让递减 (-=) 函数停在 0

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:49 24 4
gpt4 key购买 nike

我有以下代码行,当他们将股票出售给其他人时,它非常简单地减少股东的股票数量(数据库中的整数)。效果很好,符合预期。

@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 的方法来处理该逻辑。您可以设置所有类型的预期行为,例如引发异常。该方法遵循“tell don't ask”原则。它也是一个执行单个任务的简单工作单元,使您可以轻松地使用您最喜欢的单元测试框架进行测试。

正如 engineersmnky 所建议的,如果您希望 Controller 处理错误,简单地在模型上添加验证也是一个很好的解决方案。

关于ruby-on-rails - 在 Ruby 中让递减 (-=) 函数停在 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com