Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails、ActiveRecord,如何查找不存在的外来行?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails Rails、ActiveRecord,如何查找不存在的外来行?

Ruby on rails Rails、ActiveRecord,如何查找不存在的外来行?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,这个问题的标题有点难拼 假设我有两个模型,Foo和Bar。福有很多酒吧。酒吧属于一个Foo。如何使用Foo.find查找当前具有零条的所有Foo?在SQL中,这将转化为如下内容: SELECT * from foo where id NOT IN (select foo_id from bar); Foo.all(:conditions=>[“id不在(?)、Bar.all.map(&:Foo\u id)])将完成此操作,不过您可能会从中获得一些优化 如果存在速度方面的问题,您可能需要考虑使用

这个问题的标题有点难拼

假设我有两个模型,Foo和Bar。福有很多酒吧。酒吧属于一个Foo。如何使用Foo.find查找当前具有零条的所有Foo?在SQL中,这将转化为如下内容:

SELECT * from foo where id NOT IN (select foo_id from bar);
Foo.all(:conditions=>[“id不在(?)、Bar.all.map(&:Foo\u id)])
将完成此操作,不过您可能会从中获得一些优化

如果存在速度方面的问题,您可能需要考虑使用计数器缓存,这将使查询变成
Foo.find\u all\u by\u bars\u count(0)


有关计数器缓存的文档是。

您可以在此处使用
Bar.all.ids
,避免将所有数据拉入,fwiw。