ruby-on-rails - 如果已经为用户运行,Rails 6 防止多模型逻辑启动的方法是什么?
问题描述
我有一些复杂的业务逻辑,当控制器动作被击中时运行。该逻辑对与用户关联的许多不同表/记录执行各种更新。但是,如果路由连续命中足够快,控制器调用的模型方法很容易同时运行多次。
我想确保模型方法由于先前的请求而已经在处理中时不会启动。
我做了一些阅读,听起来数据库锁定可能是我想要的,但我不清楚我想要什么样的锁定,或者我是否真的想要它用于我的场景。我对这类问题没有经验。
我的逻辑不仅更新一条记录,它还更新一条用户记录以及与该用户关联的许多不同记录,跨越许多表。lock_version
在每个表中添加 a 对我来说似乎不正确,但也许这很正常?我认为我想要的是在此方法运行时冻结用户和用户的相关关联记录,因此我正在寻找实现这一目标的最佳方法。
Rails 处理这个问题的方法是什么(希望)尽可能少地增加复杂性?如果锁定是我想要的,我是否需要为lock_version
每个因此逻辑而更新的模型添加一列?
解决方案
推荐阅读
- html - Bootstrap 4 水平和垂直对齐 Font Awesome 图标
- reactjs - 在 React.js 中更新道具后的启动间隔
- python - 如何使用另一个字典列表更新字典列表?
- javascript - 将 JavaScript 对象(数组)转换为 XML
- sql - Oracle SQL 案例中的无效数字
- javascript - 异步循环函数
- python - 根据 pandas 中的上一行和下一行计算逐行点积
- python - Pyside2 如何移动盒子?
- java - MarkLogic Search 返回文档集合
- java - Selenium 不使用 ID 执行按钮单击 - Java