Rails 控制器更新从值中减去 1

Rails Controller update subtract 1 from value

提问人:S Mares 提问时间:11/15/2023 最后编辑:AlexS Mares 更新时间:11/15/2023 访问量:64

问:

如何在 Rails 控制器中的值中减去 1,这在 Postgresql 中很容易

 Update junkcars
 Set junkcartotal = junkcartotal -1
 Where id = 5161

在导轨控制器中,我尝试过

Junkcars.update(junkcartotal: junkcartotal -1).where(id: 5161)

我得到的只有错误。

Ruby-on-Rails 模型-视图- 控制器 Ruby-on-Rails-5

评论


答:

0赞 Benjamin Scharbau 11/15/2023 #1
@junk_car = Junkcar.find(5161)
@junk_car.update(junkcartotal: @junk_car.junkcartotal - 1)

评论

0赞 dennis 11/15/2023
请注意,在 update 方法中使用也引用自身的计算,因为它可能会创建一个争用条件,在该条件中,它会两次更新到相同的值。请改用该方法decrement!
0赞 Benjamin Scharbau 11/15/2023
有趣的是,以前从未遇到过这种情况。你有这个链接吗,我可以在其中阅读更多关于这个技术细节的信息?
1赞 dennis 11/15/2023
当然:fastruby.io/blog/rails/code-quality/......
2赞 Alex 11/15/2023 #2

在轨道上也很容易:

Junkcar.find(5161).decrement!(:junkcartotal)

https://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-decrement-21