【发布时间】:2012-07-14 23:51:09
【问题描述】:
我有一个包含视图计数变量(整数)的图片模型。 每当有人查看 Picture 对象时,查看次数就会增加 +1。
在完成这件事上,有什么区别
@picture.view_count += 1
@picture.save
和
@picture.increment(:view_count, 1)
如果我使用增量,是否需要 .save?
【问题讨论】:
-
语法不应该是
@picture.increment(:view_count, 1)吗? -
注意并发!在这种情况下,您的两种解决方案都不安全!想象一下两个用户同时运行代码。两者都使用相同的
view_count值。然后第二个用户在保存时覆盖第一个用户的值,最终计数比预期的少一个。您应该使用increment_counter来避免这种情况。
标签: ruby-on-rails ruby increment