ruby-on-rails - rails 阻止代码中其他地方的更改记录

标签 ruby-on-rails ruby postgresql activerecord sidekiq

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

当我将这条记录保存在 worker 中时,如何阻止来自其他地方(即 Controller )的更改的某些记录,以避免数据冲突?

最佳答案

您需要锁定模型:

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 .

关于ruby-on-rails - rails 阻止代码中其他地方的更改记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30951396/

相关文章:

ruby-on-rails - Rails 5 - 如何使用 OR 条件而不是 AND 获取记录

mysql - 从 PostgreSQL 迁移到 MySQL 时出错 [42703]

ruby-on-rails - 如何关闭 "periodically_call_remote"

javascript - 在 Heroku 产品上预编译时出现 Rails ckeditor gem js 错误

mysql - ActiveRecord::StatementInvalid: Mysql2::Error: 无法创建数据库 'sharetribe_development' (errno: 2)

ruby-on-rails - 让 rvm 为我创建的每个新 Rails 应用程序使用默认(如全局)gemset 的命令是什么?

ruby-on-rails - 将模块添加到测试类

Ruby 以一种方法获取和设置

sql - 为什么在使用 json 数据执行 sql 插入查询后,postgres 表在每一列中都显示 Null?

ruby-on-rails - 为什么 url_for 为未定义的路由返回/ Assets ?