Rails - 如何验证外键引用的行是否存在

2023-12-23

鉴于“Rails Way”似乎不使用外键约束,我正在寻找一种替代方案,它允许我在将对象保存在 TableB 中之前验证外键引用的行确实存在于 TableA 中与 table_a_id。

到目前为止,我发现的唯一可以做到这一点的资源(找不到它提到的博客文章的链接,日期为 2007 年)似乎与 Rails 3.2 不兼容,所以任何人都可以建议一种方法做这个?

我目前正在考虑创建一个验证器来手动分配给模型中的相关属性,但我无法弄清楚如何使用 validate_each(object, attribute, value) 来完成此操作。


只需像下面这样使用,

validates :user, presence: true

它会自动检查数据库中是否存在用户记录。

参考自活动记录验证 -presence https://guides.rubyonrails.org/active_record_validations.html#presence:

如果您想确保关联存在,您需要 测试关联对象本身是否存在,而不是 外键用于映射关联。这样一来,不仅 检查外键不为空,而且还检查引用的 对象存在。

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

Rails - 如何验证外键引用的行是否存在 的相关文章

随机推荐

  • 使用 Athena 查询 S3

    我设置了 Kinesis Firehose 来提取数据 AWS Lambda 执行数据转换并将传入数据放入 S3 存储桶中 S3 结构按年 月 日 小时 messages json 组织 因此我查询的所有实际 json 文件都处于 小时 级
  • ld:在 iOS 4.3 上有重复符号 _objc_retainedObject ,但在 iOS 5.0 上没有

    一些背景 我已经使用 Diney 的指南构建了一个自定义框架http db in com blog 2011 07 universal framework iphone ios 2 0 http db in com blog 2011 07
  • 无法解析配置“:app:debugAPKCopy”的所有依赖项

    当我尝试运行应用程序时似乎遇到了这个问题 当更新出现错误时可能会发生这种情况 要修复它 请打开 android sdk 管理器并 卸载android支持库 再次安装android支持库
  • 如何制作透明背景和常规文本的JButton?

    有没有办法制作一个JButton其中有透明填充 30 透明 和不透明的文本 现在我发现了以下选项 使按钮和文本都透明 使它们都不透明 两者之间有选择吗 这是一种可能的实现 使用JButton setIcon Icon 30 transpar
  • 调试 Sharepoint 计时器作业

    我正在创建我的第一个计时器作业并想要对其进行调试 我已通过一项功能安装了计时器作业 并将其添加到 Web 应用程序的 JobDefinitions 集合中 并添加了一个 SPMinuteSchedule 每 5 分钟运行一次 用于测试目的
  • 项目 /Users/X/Desktop/X/X.xcodeproj 无法打开,因为它缺少其 project.pbxproj 文件

    当尝试在现有项目中的 Xcode 中设置源代码控制功能时 我将分支更改为位于 github 的分支 但当我这样做时 我的所有代码都消失了 现在我无法打开该项目 因为它说无法打开因为它缺少其project pbxproj 文件 我可以以某种方
  • 如何使用子选择查询执行更新 sql 查询?

    我正在尝试更新此表中的两列 我有选择查询工作 但更新部分没有 这是我到目前为止所拥有的 UPDATE A SET foo bar car bmw FROM TableA A JOIN TableB B ON A col1 B colx AN
  • 将函数应用于 pandas groupby

    我有一个 pandas 数据框 其中有一列名为my labels其中包含字符串 A B C D E 我想计算每个字符串出现的次数 然后将计数数除以所有计数的总和 我试图在 Pandas 中这样做 func lambda x x size x
  • 返回列表中的每个元素 (Python)

    我知道Python 中一个函数可以返回多个值 我想做的是将列表中的每个元素作为单独的返回值返回 这可以是任意数量的元素 具体取决于用户输入 我想知道是否有一种Python式的方法可以做到这一点 例如 我有一个函数将返回一对项目作为数组 例如
  • ASP .NET Identity 中的声明是什么

    有人可以解释一下 声明机制在新的 ASP NET Identity Core 中意味着什么吗 正如我所看到的 有一个AspNetUserLogins表 其中包含UserId LoginProvider and ProviderKey 但是
  • DynamoDB 请求中包含的安全令牌无效 UnrecognizedClientException

    我有 aws credentials 和配置文件 我的代码如下 clientConfiguration setProxyHost MYPROXY clientConfiguration setProxyPort port clientCon
  • 可点击的响应,例如 Dialogflow 中的按钮

    我一直在使用dialogflow为我的android应用程序开发一个聊天机器人 并且它工作得很好 但现在我需要从我的聊天机器人获得可点击的响应 例如 假设应用程序用户正在询问特定位置 我希望 Dialogflow 聊天机器人返回一个按钮或链
  • 核心数据和 GCD:将正确的托管对象上下文传递给自定义 NSManagedObjects

    我收到运行时错误 这似乎是由于我的错误实现造成的GCD与我的自定义 NSManagedObject 结合使用 嵌套在一个GCD调用 我正在使用自定义 NSManagedObjects 它 似乎 有自己的托管对象上下文 self manage
  • 以编程方式将 XPS 文件打印到物理打印机

    我有一个 C WinForms 应用程序 用户上传 XPS 文件并指定一些打印机设置 份数 纸盒等 程序需要使用这些设置以编程方式打印文档 也就是说 不能有用于打印的用户交互 我可以使用 System Printing AddJob 方法来
  • 对每个实体子类型使用不同的投影

    是否可以通过子类型和 Spring Data REST 定义不同的投影 使用关于类类型的最具体的投影 该问题已在 JIRA issues 上曝光数据休息 739 https jira spring io browse DATAREST 73
  • 如何使用 ROCR 包计算 AUC

    我已经安装了 SVM 模型并使用 ROCR 包创建了 ROC 曲线 如何计算曲线下面积 AUC set seed 1 tune out tune svm Negative Positive data trainSparse kernel r
  • 查找定义了方法的类

    我想从方法本身中找出定义某个方法的类的类型 本质上是该方法的封闭静态范围 并且无需明确指定它 例如 class SomeClass def do it self cls enclosing class lt I need this prin
  • 如何加密 JavaScript 代码以使其不可解密?

    我有一些 JavaScript 代码需要加密 但我想确保没有人可以解密它 我可以使用什么工具来执行此操作 编辑 我仍然想在我的网站上运行代码 我只是想确保没有其他人可以解密代码 Javascript 代码在浏览器 即客户端 中执行 这意味着
  • IBM.Data.DB2“连接处理失败;未找到有效的产品许可证”

    我使用连接到 z OS 上的 IMB DB2 的 IBM Data DB2 提供程序在 NET C 中制作了一个小型桌面应用程序 当我在机器上部署这个应用程序时 我遇到了 IBM DB Connect 运行时问题 然后我发现我必须安装 DB
  • Rails - 如何验证外键引用的行是否存在

    鉴于 Rails Way 似乎不使用外键约束 我正在寻找一种替代方案 它允许我在将对象保存在 TableB 中之前验证外键引用的行确实存在于 TableA 中与 table a id 到目前为止 我发现的唯一可以做到这一点的资源 找不到它提