Rails:如何使用 before_save 更改基于另一个字段的字段值?

2024-02-26

我试图根据另一个布尔字段的值将一个布尔字段设置为 false。我使用 ActiveRecord 模型尝试了以下操作:

  before_save :reconcile_xvent

  def reconcile_xvent
    self.xvent_hood = false if !self.xvent_plenum?
  end

但这行不通。现在,我的许多单元测试都失败了:

ActiveRecord::RecordNotSaved: ActiveRecord::RecordNotSaved

如果 xvent_plenum 为 false,如何将 xvent_hood 设置为 false?

Update

以下是有效的方法(其中一些来自下面的评论/答案):

before_validation :reconcile_xvent

def reconcile_xvent
  if self.xvent_hood?
    self.xvent_hood = false unless xvent_plenum?
  end
end

如果没有“if self.xvent_hood?”,我无法弄清楚如何让它工作。部分....


before_save is only验证通过后调用。你需要做的就是移动reconcile_xvent up to before_validation而不是before_save

如果你将该方法保留在before_save将会发生的是它认为xvent_hood为空,如果您有一个验证来检查以下内容的无效性xvent_hood它将在之前失败before_save被叫。这可能解释了为什么你得到RecordNotSaved error.

另一件要记住的事情是,如果你有一个布尔属性,你也不能使用validate_presence_of. See http://alexanderwong.me/post/16084280769/rails-validate-presence-of-boolean-and-arrays-mongoid http://alexanderwong.me/post/16084280769/rails-validate-presence-of-boolean-and-arrays-mongoid

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

Rails:如何使用 before_save 更改基于另一个字段的字段值? 的相关文章

  • 列出 Rails 控制器实例变量

    我试图列出控制器内的实例变量 但想出了 irb gt HomeController instance variable names gt visible actions inheritable attributes controller p
  • FB API 调用中“无法代表此用户调用 API”

    我在调用 facebook API 时遇到问题 我正在使用 Koala 进行服务器端 api 调用 但最近在进 行 api 调用时遇到问题 所以我尝试绕过 koala 调用并使用 call 进行原始 api http 调用 但无济于事 当我
  • 自定义收集路径的polymorphic_path

    我有以下路线定义 resources documents do collection do post filter end end 以及以下模型结构 class Document lt ActiveRecord Base belongs t
  • 从 Rails 获取所有模型的列表[重复]

    这个问题在这里已经有答案了 我需要一个包含所有模型 类名 的列表 这些模型末尾有模式 Cube 例子 我所有的模型 ModelFoo ModelBar ModelBarCube Mode2BarCube 我需要的 ModelBarCube
  • 使用 jquery tokeninput 和acts_as_taggable_on

    我已经实现了这篇文章中概述的框架 如何使用 jquery Tokeninput 和 Acts as taggable on https stackoverflow com questions 6674127 how to use jquer
  • 使用 kaminari 查找给定记录的页面

    Ruby on Rails 3 项目 更新记录后 我们返回所有记录的索引 不是更新记录的视图 该索引通过 Kaminari 进行分页 我们如何返回到包含更新记录的索引页面 Java JPA Hibernate 有类似的问答使用 JPA Hi
  • 回形针如何更改基本名称(文件名)?

    我正在尝试更改照片的基本名称 文件名 在我的模型中我有 attr accessor image url basename has attached file image styles gt original gt 300x250 gt pn
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • 自定义变形在rails3上不起作用?

    我正在使用 Rails 3 0 1 并在initializers inflections rb 中有以下代码 ActiveSupport Inflector inflections do inflect inflect irregular
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • Rails - 用于集合集的单选按钮

    我有以下输出选择框 br 替代输出单选按钮的 Rails 方法是什么 对于单选按钮 您必须自行迭代并输出每个单选按钮及其标签 事实上这真的很容易
  • Rails 3 SSL 路由从 https 重定向到 http

    这个问题与此相关SO 问答 rails 3 ssl deprecation https stackoverflow com questions 3634100 rails 3 ssl deprecation建议使用routes rb和类似的
  • 再次返回使用 Rails 3 中的 Rails 2.3.5

    最近 我看到有关Rails 3 0 beta的信息 我想尝试一下 所以我使用gem update并安装了这个版本 但现在 我需要回到 Rails 2 3 5 我怎样才能做到呢 我正在考虑这两个解决方案 卸载 Rails 3 我读到有人使用
  • Yii2 修改 Model search() 中的 find() 方法

    我试图修改模型搜索中的 find 方法 但它抛出错误 必须设置数据提供程序属性 这是我的搜索模型 public function search params userID Yii app gt user gt identity gt id
  • Rails 3 分页,will_paginate 与 Kaminari

    我的设置 Rails 3 0 9 Ruby 1 9 2 我正在为我的应用程序寻找分页解决方案 发现有一个新的宝石Kaminari与值得信赖的人相比will paginate 看起来像will paginate有一段时间没有更新了 但后来又以
  • 添加两个 ActiveRecord::Relation 对象[重复]

    这个问题在这里已经有答案了 如何将两个关系添加在一起 当我尝试 运算符时 它返回一个数组 但我需要它来返回关系 谢谢 麦克风 Try new relation relation merge another relation
  • <%=h ... %> 在 Rails 中意味着什么?

    I found here http api rubyonrails org classes ActionView Helpers RecordTagHelper html以下语法 什么是h means 它用于转义标签的输出以避免跨站点脚本
  • 具有委托和条件的 Active Record

    是否可以在 Active Record 模型中使用委托并使用诸如 if on it class User lt ApplicationRecord delegate company to gt master if gt has master
  • Rails 中过滤长日志参数

    我允许用户在我的网站上上传文件 其中一些文件可能非常大 并且占用了我的日志文件的很大一部分 所以我不想让它出现 我知道 config filter parameters password 过滤某些参数 但问题是参数位于这样的哈希中 pers

随机推荐

  • 解密 Android 设备上加密的字符串

    在 Android 4 4 设备上 已使用 spring android auth 1 0 1 RELEASE 模块中的 org springframework security crypto encrypt AndroidEncrypto
  • 在 LINQ to SQL 下管理不同开发人员的连接字符串

    使用 Subversion 中的源代码 当两台不同的计算机具有不同的连接字符串时 我会遇到问题 LINQ to SQL 设计器似乎只喜欢具有相同的连接字符串 设计者是否可以使用因开发人员具有不同的本地配置而变化的连接字符串 但 Web 应用
  • 如何开始使用 ReactJS Hello World 示例?

    我正在使用 MacBook Pro 我更喜欢在虚拟机中使用 ubuntu 进行 Web 开发 我在 Macbook 中创建了一个 index html 然后只需使用 Chrome 打开它 html 是按照此创建的video https eg
  • 在 python 中解析字符串:如何分割换行符,同时忽略引号内的换行符

    我有一个需要用 python 解析的文本 这是一个字符串 我想将其拆分为行列表 但是 如果换行符 n 在引号内 那么我们应该忽略它 例如 abcd efgh ijk n1234 567 qqqq n 890 n 应解析为以下几行的列表 ab
  • 无法在动态链接库 libstdc++-6.dll 中定位过程入口点 _gxx_personality_v0 错误

    昨天 我决定下载 安装并尝试使用 Allegro 5 我还下载了带有 MinGW 编译器的 Code Blocks 12 11 我设置了所有内容并正确安装了所有内容 或者我是这么认为的 并尝试运行示例代码以查看它是否有效 include
  • NSIS 插件“nsScreenshot”在 Windows NT 6.x 中不起作用

    我添加了一个比原始插件晚3年发布的代码 但它仍然返回错误 代码很简单 恕我直言 但我仍然很可能错过某些方面 看这段代码 nsScreenshot NSIS Plugin c 2003 Leon Zandman email protected
  • C#中主线程的引用

    如何从 C 中的另一个线程获取对主线程的引用 为什么需要这个 以加载到控制台应用程序的程序集为例 该程序集引发另一个想要在控制台应用程序的主线程上等待 加入 的线程 它将如何做到这一点 我是这样想的 在 Visual Studio 2010
  • 如何在asp.net core中定义返回html的函数

    基本上我需要像旧的 asp net 这样的东西 helper MakeNote string content p strong Note strong nbsp nbsp content p or JSX MakeNote note ret
  • 将流量从 80 转发到 8080 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经用puppet安装了tomcat 它在标准 8080 端口上运行 tomcat进程以tomcat用户身份启动 我想将所有流量从端口
  • iOS:使用HKObserverQuery的后台更新completionHandler

    HKObserverQuery有以下方法支持在后台接收更新 initWithSampleType predicate updateHandler The updateHandler has a completionHandler其中有以下内
  • 从 git 存储库中提取作者信息

    我正在尝试从 git 存储库中提取 源代码行 作者标签 对 最简单的方法是使用 git Blame 问题是 gitblame 将最后一个提交者视为作者 无论提交者只是缩进代码还是真正更改了代码 你知道有什么更好的方法吗 或者也许在尝试解决问
  • 将 WPF 用户控件选择传递给主机控件

    我有一个带有列表框的 WPF 用户控件 我想通过绑定将列表框中的选定项传递给调用控件 我怎样才能实现这个目标 您可以在用户控件上公开 SelectedItem 的新属性 并将其绑定到子控件 ListBox 用户控件的代码 不过我是从 Con
  • 自定义函数类

    我正在开发一个涉及从其他函数构造函数的项目 我有编写一个类来简化事情的想法 但如果不求助于使用我就无法让它工作 proto 这基本上就是我的愿景 function MyFunction var myFn new MyFunction myF
  • Express.js + lint 给出错误

    https www youtube com watch v Fa4cRMaTDUI https www youtube com watch v Fa4cRMaTDUI我正在观看这节课 并试图重现作者所做的一切 19 00 他设置了 vue
  • 特定模型的 Django 管理自定义模板

    我正在尝试在 Django 管理中为特定模型添加自定义模板 基本上我想在 Django admin 中显示地址模型的 Google 地图 那么对此有什么帮助吗 FineManual tm 对此进行了全面介绍 因此请先阅读此内容 检查这个网址
  • 将字段更改为ManyToMany时Django数据迁移

    我有一个 Django 应用程序 我想将字段从foreignkey更改为ManyToManyField 我想保留我的旧数据 为此 最简单 最好的流程是什么 如果重要的话 我使用 sqlite3 作为我的数据库后端 如果我对问题的总结不清楚
  • SQL/SQL-LITE - 过滤后计算记录

    假设我有一个客户表和一个销售订单表 其架构如下 客户 id 姓名 销售订单 id customer id sales representer 具有以下定义 id 是两个表中的主键 customer id 是外键引用客户 我想实现以下查询 F
  • Python 对 Windows 8 的支持 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 重用存储是否会开始新对象的生命周期? [复制]

    这个问题在这里已经有答案了 include
  • Rails:如何使用 before_save 更改基于另一个字段的字段值?

    我试图根据另一个布尔字段的值将一个布尔字段设置为 false 我使用 ActiveRecord 模型尝试了以下操作 before save reconcile xvent def reconcile xvent self xvent hoo