导轨。保存时更新模型属性

2024-02-10

认为这是一项简单的任务,但我对这个问题有点坚持:

希望在保存模型时更新模型的属性之一,从而在模型中进行回调:



after_save :calculate_and_save_budget_contingency

def calculate_and_save_budget_contingency
  self.total_contingency = self.budget_contingency + self.risk_contingency
  self.save
  # => this doesn't work as well.... self.update_attribute :budget_contingency, (self.budget_accuracy * self.budget_estimate) / 1
end
  

网络服务器返回消息ActiveRecord::StatementInvalid (SystemStackError: stack level too deep: INSERT INTO "versions"

这基本上告诉我模型的保存存在无限循环,after_save然后我们再次保存模型...这会进入另一个循环saving该模型

刚好卡在这个模型属性计算的时间点上。如果有人遇到过这个问题,并且有一个很好的漂亮/rails解决方案,请在下面给我留言,谢谢


将您的代码更改为以下内容

before_save :calculate_and_save_budget_contingency

def calculate_and_save_budget_contingency
  self.total_contingency = self.budget_contingency + self.risk_contingency
end

原因是 - 如果你运行 save inafter_save你最终会陷入无限循环:保存调用 after_save 回调,后者调用 save,后者调用 after_save,后者...

一般来说,明智的做法是仅在更改关联模型等时使用“保存后”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导轨。保存时更新模型属性 的相关文章

  • Ruby IMAP IDLE 并发 - 如何解决?

    我正在尝试构建一个 目前是私有的 Web 应用程序 该应用程序将利用 IMAP IDLE 连接在人们到达时显示电子邮件 我很难弄清楚如何将其组合在一起 以及它如何与我的 Heroku RoR 服务器结合在一起 我编写了一个用于连接到 IMA
  • has_many 关系的动态 class_name

    我正在尝试与动态 class name 属性建立 has many 关系 class Category lt ActiveRecord Base has many ads class name gt lambda return self i
  • Paperclip 会自动清理文件名吗?

    我正在使用 Thoughtbot回形针宝石 https github com thoughtbot paperclip处理文件上传 我发现当我上传文件名中包含空格的文件时 它会用下划线替换空格来存储 那挺好的 我还尝试上传带有特殊字符的文件
  • AttributeError:“NoneType”对象没有属性“astype”

    我在复现ESRGAN相关程序时遇到了如下问题 libpng 错误 读取错误 Traceback most recent call last File sda ZTL B codes train py line 173 in
  • 单表继承发现问题

    我有以下3个rails类 它们都存储在一张表中 使用rails的单表继承 class Template lt ActiveRecord Base class ThingTemplate lt Template class StockThin
  • 过滤 Django 管理选择框的模型结果

    我今天刚开始使用 Django 到目前为止发现做简单的事情相当困难 我现在正在努力解决的是过滤状态类型列表 StatusTypes 模型是 class StatusTypes models Model status models CharF
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • 为什么我在安装 Rails 时会出现“写权限”错误?

    当我使用rvm use 1 9 2 我得到 Rails v3 0 0 vikas admin1 DL H61MXEL rvm use 1 9 2 default Using home vikas rvm gems ruby 1 9 2 p3
  • 如何在配置/初始化程序中使用 YML 值

    我正在努力将 Facebook 集成到我的应用程序中 为此 我使用 koala devise 和omniauth 对于考拉 我有 config facebook yml development app id 123123132123 sec
  • 定制导轨配置部分

    为 Rails 应用程序创建自定义配置部分的最佳方法是什么 理想情况下 我希望最终结果是一个 api 调用 例如 Rails configuration foo bar Rails configuration foo baz e g Rai
  • Rails 模型中的多个 counter_cache

    我正在学习 Rails 遇到了一个小问题 我正在编写带有任务列表的非常简单的应用程序 因此模型看起来像这样 class List lt ActiveRecord Base has many tasks has many undone tas
  • 如何在启动 Rails 控制台时自动运行代码?

    假设每次 Rails 控制台出现时我都想要一个问候语 Scotts MBP 4 ucode scott rails c Loading development environment Rails 4 2 1 Hello there I m
  • 当脚本是从加载的脚本动态创建的 DOM 节点时,脚本 onload 和 window.onload 的顺序是否定义良好?

    File loader js function main if typeof window undefined var script window document createElement script script src https
  • 在轮询器内异步运行代码

    在我的 ruby 脚本中 我使用 celluloid zmq gem 我尝试在轮询器内异步运行评估响应 使用 async evaluate response socket read multipart 但是 如果我从循环中删除睡眠 不知何故
  • 防止 Django 在并发请求时多次将同一对象保存到数据库

    对于我们的博客平台 我们有一个 文章 模型 其中包含一个 更新的 日期时间字段 class Article models Model updated models DateTimeField null True blank True 当任何
  • 具有多个可选参数的 Rails 3 路线

    我正在尝试创建一个具有可选参数和不同顺序的 Rails 路线 这个问题描述了一个类似的问题 具有多个 可选且漂亮参数的路由 https stackoverflow com questions 14007593 routes with mul
  • 如何将openId与rails 3中的设备集成

    我是 Rails 新手 刚刚完成了一个简单的设计设置 我正在寻求实现一些仍然使用核心设计功能集但允许通过 openid 提供商登录而不是 使用电子邮件或用户名注册 的东西 我如何开始使用最新的设计宝石和rails 3 看看devise op
  • 仅适用于安全页面的安全回形针 URL

    我正在尝试找到使回形针网址安全的最佳方法 但仅限于安全页面 例如 显示存储在 S3 中的图像的主页是http mydomain com http mydomain com图像网址是http s3 amazonaws com mydomain
  • 使用 prawnto_2 gem 加载图像时,RAILS_ROOT 不再有效

    我正在将我的应用程序从 Rails 3 0 升级到 Rails 3 1 我已经尽可能地将旧插件转为 gems 其中包括用这个漂亮闪亮的新插件替换旧的 prawnto 插件对虾 2 https github com forrest prawn
  • AJAX Rails 验证

    我的表单和验证可以很好地处理常规的 http 请求 我希望它使用 AJAX 我知道我可以在客户端进行验证 但这似乎是多余的 因为我已经在模型中定义了验证 当用户填写表单时 我想就他们的条目向他们提供反馈 在 AJAX 表单中使用 Rails

随机推荐

  • 如何在 Decision Manager 中导出和导入本地项目?

    我正在使用红帽决策管理器 我已经完成了我的项目 我想将其部署到另一台电脑上 我所能得到的只是一个 jar 文件 但是当我导入它时 决策管理器响应 未找到项目 希望有任何帮助 Thanks 从 Red Hat Decision Manager
  • 在类模板实例化中显式使用某些参数的默认值

    一个类模板可以有多个参数 这些参数都有默认值 template
  • 绘制两个 xts 对象

    我在用着xtsExtra绘制两个 xts 对象 考虑以下对plot xts的调用 plot xts merge a b screens c 1 2 它用于在两个单独的面板中绘制 xts 对象 a 和 b 如何控制 y 轴的间距 具体来说 我
  • 安卓蓝牙连接错误

    我在堆栈跟踪中收到以下消息 我可以找到蓝牙设备 但是当我尝试打开套接字时会发生这种情况 10 30 22 23 08 901 ERROR BTL CFG 8633 WARNING service brcm bt INQ FILTER BDA
  • 以 DirectX 编程方式创建纹理

    我试图通过提供 rgba 值数组 使用该数组创建 ID3D11Texture2D 资源 然后将其映射到我的 20 x 20 正方形 在屏幕上创建一个白色 20 x 20 像素正方形 以下是创建方形纹理和着色器资源视图的代码 void Squ
  • Intel Core 2 Duo 预取

    有人有过在 Core 2 Duo 处理器上使用预取指令的经验吗 我一直在使用 标准 预取集 prefetchnta prefetcht1等 在一系列 P4 机器上取得了成功 但是当在 Core 2 Duo 上运行代码时 似乎prefetch
  • Task.WhenAll() 和 foreach(任务中的 var task) 有什么区别

    经过几个小时的努力 我在我的应用程序中发现了一个错误 我认为下面的两个函数具有相同的行为 但事实证明它们并非如此 谁能告诉我幕后到底发生了什么 以及为什么他们的行为方式不同 public async Task MyFunction1 IEn
  • 获取 WooCommerce 中所有“库存”产品的数量

    我有一个网站 产品被视为贸易 交易 因此 当有人进行交易 购买产品 时 它就会缺货 显示当前可用产品的剩余数量 基本上是库存 的 PHP 代码片段是什么 例如 快点 仅 10 个交易 woocommerce gt 产品 可用 提前致谢 我尝
  • 在 JavaScript 中,如何检查数组是否有重复的多个值?

    很抱歉我英语说得不好 这些是我的简单代码 带有一些参数数组 if link indexOf x 1 y 2 z 3 1 link push x 1 y 2 z 3 else alert Duplicate 用于 for 循环但不提醒重复 您
  • Nodejs v0.10.x(freebsd)“X509_STORE_add_cert:证书已在哈希表中”

    我正在使用异步 Web api 并且在高于 v0 8 9 的 Nodejs 版本中遇到问题 uname a FreeBSD home 9 1 STABLE FreeBSD 9 1 STABLE 0 2 月 1 日星期五 10 38 27 E
  • 如何在 Angular 单元测试中有条件地刷新 $timeout

    我的代码是这样的 function doThing if invalidInput console error Invalid input return timeout function MyService doThing 1000 我想测
  • 如何在C++中实现big int

    我想在 C 中实现一个 big int 类作为编程练习 一个可以处理大于 long int 的数字的类 我知道已经有几个开源实现 但我想编写自己的实现 我正在尝试了解什么是正确的方法 据我了解 一般策略是将数字作为字符串获取 然后将其分解为
  • 如果 url 变量为空则重定向到主页

    我无法让它正常工作 我有一个 view php 页面 它使用 ID 变量来检索数据库信息 所以我的网址是这样的 view php id 23 如果用户删除了 url 的 23 部分 我试图让它将用户 重定向 到主页 所以当你访问时 view
  • javascript 函数在块语句内提升

    function foo foo 1 function foo foo 2 console log foo 1 谁能解释一下为什么这里输出 1 Edit 似乎存在实现差异 在 Chrome Firefox Nodejs 中输出为 1 但在
  • 如何使用 Python 2.6 在 Windows 上安装 PyGTK / PyGobject?

    我有一个依赖于 PyGTK PyGobject 和 PyCairo 的应用程序 我为在 Linux 上运行而构建了该应用程序 我想将它移植到Windows 但是当我执行时import gobject我明白了 Traceback most r
  • 使用 Gradle 运行特定的仪器单元测试

    有没有办法使用 Gradle 运行特定的 Android 仪器单元测试 我试过了 gradle Dtest single UnitTestName connectedInstrumentTest 但它似乎运行了包中的所有测试 Using t
  • 将组合框添加到 ListViewItem

    我正在使用 C 创建一个 Windows 窗体应用程序 该表单包含一个ListView 这是红十字会调度员的应用程序 ListView 有所有单位的列表 每个单位都有一个状态 此状态需要更改 因此 我想向每个 ListViewItem 添加
  • 使用 OpenCV.js 检测角落里有正方形的框架

    我一直在尝试使用 Javascript 和 OpenCV js 创建一个填写的表单扫描仪 我基本上想做的是拍摄一张写有填写好的表格的纸的照片 然后能够扫描照片并分析表格中的答案 第一步是实际找到图片中的形式并应用透视变换以获得论文的 自上而
  • '' 附近的语法不正确

    我正在尝试在 SQL Server Management Studio 中运行以下相当简单的查询 SELECT TOP 1000 FROM master sys procedures as procs left join master sy
  • 导轨。保存时更新模型属性

    认为这是一项简单的任务 但我对这个问题有点坚持 希望在保存模型时更新模型的属性之一 从而在模型中进行回调 after save calculate and save budget contingency def calculate and