Rails:找到没有的记录的"has_one"记录

And*_*rew 7 sql ruby-on-rails associations find ruby-on-rails-3

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

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

现在,问题出在这里:

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

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

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

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

谢谢!!

sal*_*der 8

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

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

  • 这有效! - 在Rails中它只是`Foo.where("id NOT IN(SELECT foo_id FROM Bar)")`谢谢! (4认同)