修复2用户同时执行相同操作

时间:2016-08-14 13:37:35

标签: ruby-on-rails

我遇到了可扩展性问题,用户可以将其连接到商店。但是,该商店只能连接到一个用户。

现在的问题是多个用户正在点击" connect"在同一时间,这会搞砸它。

我把它放在后台工作中,用Sidekiq运行:

ActiveRecord::Base.connection_pool.with_connection do
  store = Store.find_by(guid: guid)
  return unless store
  store.connect!
end

我认为这样可以解决永远不允许同时执行其中两项操作的问题,我猜他们应该以某种方式排队。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在数据库设置中,您将使用数据库锁。 rails支持乐观和悲观锁定。我认为本文总结了初学者http://thelazylog.com/understanding-locking-in-rails-activerecord/

的使用和权衡