假设我允许人们对项目进行投票,我正在这样做:
bid = Bid.new
..
bid.save!
item.total_bids += 1
item.save!
如果多人同时对一件元素出价,这不会有问题吗?
最佳答案
绝对有并发问题。 Rails 提供了 increment_counter 来处理这个:
Item.increment_counter( :total_bids, item.id )
这会在数据库上运行 SQL:
UPDATE items SET total_bids = total_bids + 1 WHERE id = x
详情请看这里: http://api.rubyonrails.org/classes/ActiveRecord/CounterCache.html#method-i-increment_counter
关于mysql - 在 Rails 中更新计数器,这是否存在并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217876/