如何确定 ActiveRecord 中的关联是否发生变化?

2023-12-27

ActiveRecord 提供更改跟踪,其中调用#name_changed?返回 true/false 取决于是否name属性在模型加载时和现在之间发生了变化。

协会有类似的东西吗?我专门寻找 has_many 关联,但所有关联类型都会有用。

Rails 5.2、Ruby 2.5.1


好吧,不是答案,但这是我想出的解决方法。

在我的项目中我已经使用了 gemaudited https://github.com/collectiveidea/audited为了跟踪模型的更改,我也想接收更改。就我而言,模型是Location我想检查位置是否更改的模型是Employee

In the after_save然后,我检查是否对该位置进行了审核以及是否在几秒钟内创建了该位置。如果是这样,我可以检查更改。

简化示例:

# app/models/location.rb
class Location < ApplicationRecord
  audited
end

# app/models/employee.rb
class Employee < ApplicationRecord
  after_save :inform_about_changes!
  belongs_to :location

  def inform_about_changes!
    last_location_change = location.audits.last
    if last_location_change.created_at.between?(2.seconds.ago, Time.now)
      if last_location_change.audited_changes.include? 'city'
        city_was = last_location_change.audited_changes[0]
      end
    end
  end
end

再说一次,这不是一个答案,但它在我的案例中完成了工作

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

如何确定 ActiveRecord 中的关联是否发生变化? 的相关文章

  • 按共同关联的数量排序 (Rails)

    背景 我有帖子和用户 并且都有很多社区 客观的 对于任何给定的用户 我想返回一个帖子集合 按该帖子与该用户有共同社区的数量排序 具有更多共同社区的帖子位于更高的位置 我当前的尝试 使用排序方法 有效 Post includes commun
  • 与同一模型的多个 has_many 关系

    我有一个可以创建帖子的模型用户 User has many posts Post belongs to user 但是 我还想允许用户将帖子保存为书签 所以我添加了以下内容 Bookmark belongs to post belongs
  • 将局部变量传递给视图加载后渲染的局部变量

    Update 我刚刚发现另一个线程解释了为什么我遇到这个问题 将本地 Rails 变量传递给 JavaScript 到部分 https stackoverflow com questions 12342058 pass local rail
  • 如何在Rails 4.1中使用secrets.yml作为API_KEYS?

    在我最近的一个项目中 我开始于 gitignoring包含机密和环境变量的文件 因此 除了包含第三方机密 例如 Stripe Twitter API 或 Facebook Graph 或内部 api keys 等 的文件外 整个项目都致力于
  • 安装了 Rails 但它说我没有:)

    我刚刚执行了这个命令来安装 Rails gem install rails 它似乎运行良好并安装了东西 然后当我按照本教程进行操作时 http guides rubyonrails org getting started html http
  • 在关联声明中使用“self”(:has_many,:has_one)

    我需要在 has many 声明中引用模型的自身 我有一门课 我们称之为 Foo Foo has many 酒吧 Foo 有一个名为 randomize 的布尔属性 它确定 has many 关系中 Bar 的顺序 如果 randomize
  • YouTube 视频出现 Phantom JS 错误

    Phantom JS 版本 1 9 1 恶作剧版本 1 3 0 从今天开始 YouTube 嵌入视频在运行 javascript 测试时会出现 poltergeist 错误 我的 YouTube 代码只是默认的嵌入 YouTube 代码 这
  • Rails 上的 SASS 无效 CSS 错误

    我正在尝试使用http startbootstrap com stylish portfolio http startbootstrap com stylish portfolio但是 在我的 Rails 应用程序中 我在 vintage
  • Rails 查询连接关联表与别名

    我有一个模型Edge属于另一个模型Node通过不同的外键两次 def Edge lt ActiveRecord Base belongs to first class name Node belongs to second class na
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • 从 Rails Helper 返回多个标签的最佳方法是什么?

    我想创建一个隐藏字段并在一个助手中创建一个链接 然后将两者输出到我的 erb 应该输出结果 link to something a path form hidden field something tableize value gt som
  • 安装 Rails Apartment gem 时出现问题

    当我尝试时出现错误 bundle exec rails generate apartment install 收到此错误 build Apartment Reloader 的未定义方法新 字符串 无方法错误 看起来这是一个中间件问题 任何解
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它
  • 如何最好地将地址关联到 Rails 中的多个模型?

    这个问题 https stackoverflow com questions 648463 best way to model customer addresson SO 似乎与我的问题有关 但我不确定我的问题是否得到了回答 一个地址可以属
  • Capistrano 部署擦除数据库?

    我已成功使用 Capistrano 将我的应用程序部署到生产环境 但我不明白如何处理我的数据库 我正在使用颠覆和乘客 当我运行 cap 部署时 新部署会重新启动一切 它会清除添加到数据库中的数据 显然 必须有一个解决方案 但我很惊讶没有在网
  • Rails 5 - Google 地图 - Javascript 错误 - initMap 不是函数 - 修复一个 js 问题会产生另一个问题

    多年来我一直在尝试弄清楚如何在我的 Rails 应用程序中使用谷歌地图 我目前正在尝试使用 Rails 5 我也一直在试图弄清楚如何让我的 javascript 在生产环境中工作 我最近对这些挑战的尝试概述于生产问题帖子 https sta
  • 如何将 CarrierWave 文件迁移到新的存储机制?

    我有一个 Ruby on Rails 站点 其中包含使用 CarrierWave 进行文件处理的模型 当前使用本地存储 我想开始使用云存储 并且需要将现有的本地文件迁移到云端 我想知道是否有人可以指出这样做的方法 使用模型属性的好处是 它允
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处
  • 多步ActiveRecord的模型验证

    考虑具有以下字段的用户模型 名字 必填 姓氏 必填 电子邮件 必填 要求输入密码 电话 必填 大小 10 位数字 地址 必填 以及包含以下步骤的多步骤注册表单 第一步 包含 名字 姓氏 和 电子邮件 字段 第二步输入密码 电话和地址 您将如
  • 为 Ruby On Rails 环境创建 Docker 映像时出错(从 Dockerfile)

    估计是环境问题 当我手动执行此操作 没有 Dockerfile 时 它可以工作 这是我的 Dockerfile FROM ubuntu 14 04 RUN apt get update RUN apt get upgrade assume

随机推荐

  • IronPython 在托管时如何加载模块?

    我对 IronPython 在托管时加载模块的方式感到困惑 我正在使用使用 MSI 包安装的 IronPython 2 7 7 并且我已经引用了C Program Files x86 IronPython 2 7 IronPython dl
  • Web 浏览器和 OLECMDID_SELECTALL

    当我使用以下命令打开 Google 网页时 WebBrowser1 Navigate http www google com au advanced search hl en 它打开时光标位于编辑框中 所以当我使用 WebBrowser1
  • JQuery mobile - 如何设置多重选择的值?

    我在 jquery mobile 中有一个多重选择 docs http jquerymobile com demos 1 0a4 1 docs forms forms selects html http jquerymobile com d
  • 对不平衡面板数据集进行子集化,以在 R 中至少有 2 个连续观测值

    我在 R 中有一个不平衡面板数据集 以下将作为示例 dt lt data frame name rep c A B C c 3 2 3 year c 2001 2003 2000 2002 2000 2001 2003 gt dt name
  • MATLAB eig 有时会返回倒号

    我正在尝试编写一个获取矩阵的程序A任何大小 SVD 分解它 A U S V Where A是用户输入的矩阵 U是由特征向量组成的正交矩阵A A S是奇异值的对角矩阵 并且V是特征向量的正交矩阵A A 问题是 MATLAB 函数eig有时会返
  • 访问shared_ptr数组

    include
  • 从文本文件中提取数据时出现问题

    我是 python 新手 我想从这种格式中提取数据 FBpp0143497 5 151 5 157 PF00339 22 Arrestin N Domain 1 135 149 83 4 1 1e 23 1 CL0135 FBpp01434
  • Javascript 获取表单数组值

    我设置了一个表单 其中有一个添加按钮 以便我的用户可以一次向该网站提交多人 首先 表单有一个输入来填写人员姓名 如下例所示
  • 计算每列中小于 x 的元素数量

    我有一个如下所示的数据框 我试图计算每列中小于 2 0 的元素数量 然后我将在条形图中可视化结果 我使用列表和循环来做到这一点 但我想知道是否有一种 熊猫方式 可以快速做到这一点 x for i in range 6 x append df
  • F# 使用累加器,仍然出现堆栈溢出异常

    在下面的函数中 我尝试通过使用累加器来设置尾递归 但是 我遇到了堆栈溢出异常 这让我相信我设置函数的方式没有正确启用尾递归 F attempting to make a tail recursive call via accumulator
  • 创建表达式树以访问通用类型的属性

    我需要编写一个泛型方法 它采用泛型类型的实例和字符串格式的属性名称 并返回一个表达式树 我需要转换一个简单的 lambda 表达式 a gt a SomePropertyName where a是泛型类型将拥有财产按名字SomeProper
  • “无法在此文件中预览 - 无法启动 [应用程序名称]”

    我正在尝试在 Xcode 11 和 macOS Catalina 中使用 swiftUI 但 创建新项目后 会出现一个样板代码 其中包含文本 hello World 我想在代码旁边的画布中实时预览这个简单的欢迎消息 当我点击恢复按钮时 它说
  • 优雅的蟒蛇? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JS:不确定函数返回的原因

    确实是新手问题 但为什么我的函数返回 1 该函数确实有匹配项 那么为什么该函数返回 1 而不是索引值 如果我删除 else 语句 它将返回正确的输出 let array 1 2 3 4 5 6 7 8 9 let target 5 func
  • Powershell 在过去 6 个月内禁用 AD 用户?

    如何获取过去 6 个月内禁用的 AD 用户以及禁用时的时间戳 以 dd MM yyyy 格式作为 CSV 文件 就像使用这个 Powershellhttps learn microsoft com en us powershell modu
  • PHP 会话注销错误

    许多人可能会使用 PHP mySQL 函数作为网站的登录部分 我正在尝试使用这段代码 在每个内容页面上 检查是否已登录 在每个内容页面的标题中 Page Content Here 登录脚本 由我的 main login php 页面引用
  • 在 onDraw() 中保存画布;

    我试图将 Canvas 对象保存在 onDraw 方法中 这是因为我在 onDraw 方法中使用了 foreach 循环 结果是 canvas DrawText 文本项 x y textpaint 我必须这样做 因为我在遮罩区域周围绘制文本
  • Java 8 Streams 中的并行性和 Flatmap

    考虑以下示例 IntStream of 1 1 parallel flatMap i gt IntStream range 0 1000 parallel forEach System out println 我是否将内部标志设置为并行有关
  • C 语言的接口

    我正在设计一个应用程序并遇到一个实施问题 我有以下结构定义 app h struct application t void run application struct application t void stop application
  • 如何确定 ActiveRecord 中的关联是否发生变化?

    ActiveRecord 提供更改跟踪 其中调用 name changed 返回 true false 取决于是否name属性在模型加载时和现在之间发生了变化 协会有类似的东西吗 我专门寻找 has many 关联 但所有关联类型都会有用