【发布时间】:2015-07-03 23:13:12
【问题描述】:
我有一个 ruby on rails 应用程序,有很多 sidekiq 工作人员。一些工人可以工作一段时间(至少几分钟)。
我怎样才能阻止一些记录从其他地方(即控制器)进行更改,以避免当我将此记录保存在工作器中时发生数据冲突?
【问题讨论】:
标签: ruby-on-rails ruby postgresql activerecord sidekiq
我有一个 ruby on rails 应用程序,有很多 sidekiq 工作人员。一些工人可以工作一段时间(至少几分钟)。
我怎样才能阻止一些记录从其他地方(即控制器)进行更改,以避免当我将此记录保存在工作器中时发生数据冲突?
【问题讨论】:
标签: ruby-on-rails ruby postgresql activerecord sidekiq
你需要锁定模型:
account = Account.first
account.with_lock do
# This block is called within a transaction,
# account is already locked.
account.balance -= 100
account.save!
end
您可以阅读更多关于它的信息here。
【讨论】: