Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找没有关联has_many对象的所有对象

查找没有关联has_many对象的所有对象
EN

Stack Overflow用户
提问于 2009-04-24 18:37:40
回答 3查看 5.1K关注 0票数 5

在我的在线商店中,如果订单处于“已授权”状态,并且没有任何相关发货,则该订单已准备好发货。现在我正在做这件事:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Order < ActiveRecord::Base
    has_many :shipments, :dependent => :destroy

    def self.ready_to_ship
        unshipped_orders = Array.new
        Order.all(:conditions => 'state = "authorized"', :include => :shipments).each do |o|
            unshipped_orders << o if o.shipments.empty?
        end
        unshipped_orders
    end
end

有没有更好的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-25 01:16:13

您还可以使用普通的查找语法查询关联:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Order.find(:all, :include => "shipments", :conditions => ["orders.state = ? AND shipments.id IS NULL", "authorized"])
票数 8
EN

Stack Overflow用户

发布于 2012-07-17 00:27:16

在Rails 3中使用AREL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Order.includes('shipments').where(['orders.state = ?', 'authorized']).where('shipments.id IS NULL')
票数 12
EN

Stack Overflow用户

发布于 2009-04-24 23:38:28

一种选择是订购一个shipment_count,它将根据您附加到它的货件数量自动更新。然后你就

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Order.all(:conditions => [:state => "authorized", :shipment_count => 0])

或者,您也可以使用一些SQL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Order.find_by_sql("SELECT * FROM
  (SELECT orders.*, count(shipments) AS shipment_count FROM orders 
    LEFT JOIN shipments ON orders.id = shipments.order_id 
    WHERE orders.status = 'authorized' GROUP BY orders.id) 
  AS order WHERE shipment_count = 0")

在使用它之前对其进行测试,因为SQL不是我的拿手好戏,但我认为它几乎是正确的。我让它在我的生产DB (即MySQL )上对类似的对象排列起作用。

请注意,如果您在orders.status上没有索引,我强烈建议您这样做!

查询的作用:子查询获取所有处于授权状态的订单的所有订单计数。外部查询将该列表向下过滤为发货计数等于零的列表。

可能有另一种方法可以做到这一点,有点违反直觉:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"SELECT DISTINCT orders.* FROM orders 
  LEFT JOIN shipments ON orders.id = shipments.order_id
  WHERE orders.status = 'authorized' AND shipments.id IS NULL"

抓取所有已授权且在发货表中没有条目的订单;)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/788106

复制
相关文章
jQuery对象的查找
在jQuery中,我们可以使用各种方法来查找和选择特定的元素或元素集合。这些查找方法使我们能够根据不同的选择器、属性、关系等条件来定位和操作元素。
堕落飞鸟
2023/05/18
7490
OC - Association 关联对象
默认情况下,由于分类底层结构的限制,不能直接给 Category 添加成员变量,但是可以通过关联对象间接实现 Category 有成员变量的效果。 传送门:OC - Category 和 Extension
师大小海腾
2020/04/16
1.4K0
OC - Association 关联对象
【iOS】关联对象详解
associatedObject又称关联对象。顾名思义,就是把一个对象关联到另外一个对象身上。使两者能够产生联系。目前我能想到的关联对象的使用场景有如下几点:
VV木公子
2018/06/05
7.7K0
【iOS】关联对象详解
Java没有对象编程
当初学Java,学面向对象真是痛苦呀,等到学到线程和锁,我是彻底牺牲了,后来......后来......经日月潭主周董指点迷津,给我唱了一首神曲,从此,Java学会了,工作找到了,升职加薪,赢取白富美
范蠡
2018/04/04
8030
简化补充关联对象的业务代码
问题中有分类信息,但是默认保存在库表中的只有分类Id(categoryId),但是接口返回给调用方的时候,需要补充完整的Category信息
十毛
2019/11/26
4820
单应性对象查找
算法:单应性对象查找是获得最佳图像后,通过单应性执行查询图像和训练图像的透视变换来获得查询图像在训练图像中的位置。
裴来凡
2022/09/21
3890
单应性对象查找
Django基础篇-表关联对象
可以在项目目录下通过 python manage.py shell 进入到当前目录下的 python 的 idle。
小团子
2019/07/18
1.3K0
Django基础篇-表关联对象
OC基础关联对象AssociationObject如何保存的
主要分析在runtime中关联对象操作是如何实现的,数据对象时如何保存的及关联对象的释放。
Light413
2020/04/08
7410
OC基础关联对象AssociationObject如何保存的
所有实现IAnimal接口的实例对象
如果我们想要一次性将所有实现了IAnimal接口对象Cry方法的实例全部执行一遍,只能一个对象一个对象的初始化,然后调用cry方法。这样太麻烦,我们可以通过动态创建对象并执行对象的方法来实现这个效果。遴选真题下面,我们将开始动态创建所有实现。第一步,我们需要先获取到所有实现了IAnimal实例对象。现在,我们已经得到了所有实现IAnimal接口的实例对象。讲道理来说,我们就可以用Activator动态创建这些对象了。我们可以使用下面的代码http://lx.gongxuanwang.com/sszt/23.htm
用户7737280
2021/11/27
4940
iOS Category 添加属性实现原理 - 关联对象
typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) { OBJC_ASSOCIATION_ASSIGN = 0, // 指定一个弱引用相关联的对象 OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, // 指定相关对象的强引用,非原子性 OBJC_ASSOCIATION_COPY_NONATOMIC = 3, // 指定相关的对象被复制,非原子性 OBJC_ASSOCIATION_RETAIN = 01401, // 指定相关对象的强引用,原子性 OBJC_ASSOCIATION_COPY = 01403 // 指定相关的对象被复制,原子性 };
用户1941540
2019/02/15
3.3K0
iOS Category 添加属性实现原理 - 关联对象
(还在没有对象而发愁吗,new出来)->Java面向对象入门
强调的是我该怎么去做。即功能的执行过程,即先干啥,后干啥。在面向过程中,我们会写很多的函数,每一个函数负责完成某一个功能。
上分如喝水
2021/08/16
8780
(还在没有对象而发愁吗,new出来)->Java面向对象入门
iOS底层原理总结 - 关联对象实现原理
面试题 Category能否添加成员变量?如果可以,如何给Category添加成员变量? 答:不能直接添加成员变量,但是可以通过runtime的方式间接实现添加成员变量的效果。 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。我们通过之前的学习知道,对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,使这个对象的属性跟这块内存产生一种关联。 那么如果想动态的添加属性,其实就是动态的产生某种关联就好了。而想要
xx_Cc
2018/06/19
1.3K0
JavaScript 对象所有API解析【2020版】
近日发现有挺多人对对象基础API不熟悉,举个开发中常见的需求,经常会有类似的封装http到原型Vue.prototype,一般人是这样封装的,但容易被篡改。
前端迷
2020/02/26
1K0
JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
1、原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用。在单独使用中,代码如下: function Person(){ } Person.prototype.name="张三"; Person.prototype.age=22; Person.prototype.job="coder"; Person.prototype.sayName=function(){ al
郑小超.
2018/01/24
1.7K0
《Effective Java》—— 对于所有对象都通用的方法
本节主要涉及Object中通用的一些方法,比如equals,hashCode,toString,clone,finalize等等 覆盖equals时请遵守通用约定 equals方法实现的等价关系: 自反性:对于所有的非null,a=a 对称性:a=b,则b=a 传递性:a=b,b=c,则a=c 一致性:对于没有被修改的ab,如果a=b,则一直a=b 非空性:对于任何非Null,a!=null 高质量equals方法的诀窍: 使用==操作符检查——“参数是否为这个对象的引用” 使用instanceof检
用户1154259
2018/01/17
6470
函数式编程与面向对象编程[4]:Scala的类型关联Type Alias函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
scala里的类型,除了在定义class,trait,object时会产生类型,还可以通过type关键字来声明类型。
一个会写诗的程序员
2018/08/20
7730
dotnet 6 使用 DependentHandle 关联对象生命周期
本文将告诉大家在 dotnet 6 新加入的 System.Runtime.DependentHandle 的类型的使用方法,通过 DependentHandle 可以实现将某个对象的引用生命周期和另一个对象关联起来
林德熙
2022/08/12
2270
选择篇(024)-所有对象都有原型吗?
在js中所有通过对象创建的对象,都有一个原型。这些对象都有一个通过原型链接的父级,而这些链接起对象的原型就是原型链。
齐丶先丶森
2022/05/12
1.2K0
JAVA 通用寻找对象间差异的所有字段
最近在做某个项目中,需要查找多个属性间不同的字段,但这些属性很多,一个一个的字段比较,很折腾,所以就自己写了一个快速的框架. 1.定义需要对比的结果,有新增,变更,删除,无变化四种结果
星痕
2020/04/01
2.7K0
点击加载更多

相似问题

Rails,嵌套has_many关联,查找所有子对象

30

如何删除嵌套has_many关联中关联的所有对象?

10

Rails:查找父对象的所有关联对象

21

Rails 4,通过关联查找关联对象的has_many

012

RoR:查找对象数组的所有关联对象

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文