热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Rails:找到没有的“has_one”记录-Rails:Findthe“has_one”recordthatdoesn'thaveone

So,Ihaveanappwithtwomodels.Foohas_oneBar,Barbelongs_toFoo.所以,我有一个有两个型号的应用程序。Foohas_o

So, I have an app with two models. Foo has_one Bar, Bar belongs_to Foo.

所以,我有一个有两个型号的应用程序。 Foo has_one Bar,Bar belongs_to Foo。

Now, to create a Foo you must to have to create a Bar to belong to it, but it looks like something slipped through the cracks because in my production app I now seem to have one Foo that somehow got created without a Bar, and it causes a 500 error.

现在,要创建一个Foo,你必须要创建一个属于它的Bar,但它看起来像是一些漏洞,因为在我的生产应用程序中,我现在似乎有一个Foo以某种方式创建没有Bar,它导致500错误。

Now, here's the problem:

现在,问题出在这里:

I can search: Bar.where(:foo=>nil) just fine. But orphan bars aren't a problem, and this doesn't tell me what I need.

我可以搜索:Bar.where(:foo => nil)就好了。但孤儿棒不是问题,这并没有告诉我我需要什么。

I need to find the one Foo where Bar is nil. But the database stores the relationship in the Bars table, ie, BarsTable has foo_id in it, there's nothing in the FoosTable to tell me it's missing a bar.

我需要找到一个Foo,其中Bar是零。但是数据库将关系存储在Bars表中,即BarsTable中有foo_id,FoosTable中没有任何内容告诉我它缺少一个条形码。

When I use Foo.find(#).bar I would get nil for the one bogus record, but I have a lot of records.

当我使用Foo.find(#)。栏时,我会为一个虚假的记录得到零,但我有很多记录。

So, can anyone tell me how to construct a query that would return the one Foo that is missing it's Bar?

那么,任何人都可以告诉我如何构建一个返回丢失它的Bar的一个Foo的查询吗?

Thanks!!

2 个解决方案

#1


7  

I'm not sure what the Ruby code would be, but I think the SQL should be something like:

我不确定Ruby代码是什么,但我认为SQL应该是这样的:

SELECT * FROM Foo WHERE id NOT IN (SELECT foo_id FROM Bar)

SELECT * FROM Foo WHERE id NOT IN(SELECT foo_id FROM Bar)

#2


2  

Another way (without using SQL) would be to do something like:

另一种方法(不使用SQL)将是这样的:

Foo.all.select{ |f| !f.bar }

Foo.all.select {| f | !f.bar}

This would return an array of Foo objects which don't have a related Bar object.

这将返回一个没有相关Bar对象的Foo对象数组。

In this method, you're not relying on specific table information. If the foreign_key column were to change in the future Foo -> Bar association, this method would continue to work.

在此方法中,您不依赖于特定的表信息。如果在将来的Foo - > Bar关联中要更改foreign_key列,则此方法将继续有效。


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
author-avatar
捕鱼达人2502940243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有