【问题标题】:rails block a record for change for another places in the coderails 阻止记录以更改代码中的其他位置
【发布时间】:2015-07-03 23:13:12
【问题描述】:

我有一个 ruby​​ on rails 应用程序,有很多 sidekiq 工作人员。一些工人可以工作一段时间(至少几分钟)。

我怎样才能阻止一些记录从其他地方(即控制器)进行更改,以避免当我将此记录保存在工作器中时发生数据冲突?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord sidekiq


    【解决方案1】:

    你需要锁定模型:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-01
      • 2016-11-10
      • 2013-11-10
      • 2015-08-18
      • 2014-03-20
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      相关资源
      最近更新 更多