首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找没有关联has_many对象的所有对象

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

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

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

代码语言:javascript
运行
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
运行
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
运行
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
运行
AI代码解释
复制
Order.all(:conditions => [:state => "authorized", :shipment_count => 0])

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

代码语言:javascript
运行
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
运行
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

复制
相关文章
PHP获取当前时间、年份、月份、日期和天数
其中参数 format 为显示格式,参数 timestamp 为时间戳,是可选择的,默认为 time() ,即如果没有给出时间戳则使用本地当前时间。
德顺
2019/11/12
24.5K0
WPF 日期选择器和时间选择器
格式有要求,必须是yyyy-MM-dd hh:mm:ss或者yyyy/MM/dd hh:mm:ss
码客说
2023/02/10
6.1K0
日期选择器DatePicker和时间选择器TimePicker
在实际开发中,经常会遇见一些时间选择器、日期选择器、数字选择器等需求,那么从本期开始来学习Android中常用选择器,今天学习的是DatePicker和TimePicker。 一、DatePicker DatePicker是一个比较简单的组件,从FrameLayout派生而来,供用户选择日期。其在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期,如果程序需要获取用户选择的日期则可通过为DatePicker添加 OnDateChangedListener 进行监听来实现。
分享达人秀
2018/02/05
5.2K0
日期选择器DatePicker和时间选择器TimePicker
UIDatePicker 日期时间选择器
//星期 月日 时分 上下午 UIDatePicker dk = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 20, 320, 200)]; [self.view addSubview:dk]; //四种 类型 dk.datePickerMode = UIDatePickerModeCountDownTimer; / UIDatePickerModeTime, // Displays hour, m
用户8983410
2021/10/29
2.7K0
微信小程序- 选择器 合并时间和日期
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
叉叉敌
2019/08/31
1K0
jquery选择器用法_jQuery属性选择器
一、 基本选择器 1. ID选择器 ID选择器#id就是利用DOM元素的id属性值来筛选匹配的元素,并以iQuery包装集的形式返回给对象。 使用公式:(“#id”) 示例:(“#box”) //获取id属性值为box的元素 2. 元素选择器 元素选择器是根据元素名称匹配相应的元素。元素选择器指向的是DOM元素的标记名,也就是说元素选择器是根据元素的标记名选择的。 使用公式:(“element”) 示例:(“div”) //获取所有div元素 3.类名选择器 类选择器是通过元素拥有的CSS类的名称查找匹配的DOM元素。在一个页面中,一个元素可以有多个CSS类,一个CSS类又可以匹配多个元素,如果有元素中有一个匹配类的名称就可以被类选择器选取到。简单地说类名选择器就是以元素具有的CSS类名称查找匹配的元素。 使用公式:(“.class”) 示例:(“.box”) //获取class属性值为box的所有元素 4.复合选择器 复合选择器将多个选择器(可以是ID选择器、元素选择器或是类名选择器)组合在一起,两个选择器之间以逗号”,”分隔,只要符合其中的任何一个筛选条件就会被匹配,返回的是一个集合形式的jQuery包装集,利用jQuery索引器可以取得集合中的jQuery对象。 注意:多种匹配条件的选择器并不是匹配同时满足这几个选择器的匹配条件的元素,而是将每个匹配的元素合并后一起返回。 使用公式:(“selector1,selector2,……,selectorN”) selector1:一个有效的选择器,可以是ID选择器、元素选择器或类名选择器等 selector2:另一个有效的选择器,可以是ID选择器、元素选择器或类名选择器等 selectorN:(可选择)任意多个选择器,可以是ID选择器、元素选择器或类名选择器等 示例:(“div,#btn”) //要查询文档中的全部的<div>元素和id属性为btn的元素 5.通配符选择器
全栈程序员站长
2022/11/16
12.2K0
JQuery选择器和JQuery包装集
(本文年代久远,请谨慎阅读)今天学习了JQuery的一些基本用法,包括JQuery选择器和JQuery包装集;
ZONGLYN
2019/08/08
3.1K0
DateTimePicker 日期时间选择器,默认获取当前日期
在vue里面,我们已经用到过单独的TimePicker 时间选择器和DatePicker 日期选择器了,现在需要用到一个可以同时选择年月日时分秒的插件,饿了么的文档里面就有现成可以使用的~~
王小婷
2021/07/19
7.3K0
DateTimePicker 日期时间选择器,默认获取当前日期
datepicker小插件(日期时间 & 日期 & 月份)
一个简单的日期时间选择小插件,引用 jquery.js  & bootstrap.css (需要图标文件) 如果路过的 朋友只是为了 找一个 可以直接引入 项目的时间控件,那么我推荐 Date Range Picker A JavaScript component for choosing date ranges.  Designed to work with the Bootstrap CSS framework. 官方网址 : http://www.daterangepicker.com/ 在这里你可
lonelydawn
2018/02/09
8.3K0
datepicker小插件(日期时间 & 日期 & 月份)
微信小程序日期+时间选择器
这种内置定义好的选择器都是从底部弹起。目前支持五种选择器,通过设置mode来区分。分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器。
李才哥
2019/07/10
7.5K0
微信小程序日期+时间选择器
jQuery 选择器
原生 JS 获取元素方式很多,很杂,而且兼容性情况不一致,因此 jQuery 给我们做了封装,使获取元素统一标准。
星辰_大海
2020/10/09
2.8K0
jQuery 选择器
jQuery选择器
说明: 可以使用length属性来判断标签是否选择成功, 如果length大于0表示选择成功,否则选择失败。
落雨
2022/03/01
30.4K0
JQuery选择器
jQuery常用的事件: load:当文档加载时运行脚本 blur:当窗口失去焦点时运行脚本 focus:当窗口获得焦点时运行脚本 change:当元素改变时运行脚本 submit:当提交表单时运行脚本 keydown:当按下按键时运行脚本 keypress:当按下并松开按键时运行脚本 keyup:当松开按键时运行脚本 click:当单击鼠标时运行脚本 dblclick:当双击鼠标时运行脚本 mousedown:当按下鼠标按钮时运行脚本 mousemove:当鼠标指针移动时运行脚本 mouseout:当鼠标指针移出元素时运行脚本 mouseover:当鼠标指针移至元素之上时运行脚本 mouseup:当松开鼠标按钮时运行脚本 abort:当发生中止事件时运行脚本
我不是费圆
2020/09/21
7.5K0
JQuery选择器
1    $("*")      ---------选取所有元素 2   $(this)     --------选择当前HTML元素 3   $("p.a")   -----选取p元素下class为a的元素 4   $("p:first")  ----选取第一个p元素 5   $("ul li:first-child") ----选取ul下第一个li元素 6  $("tr:even")  -------选取偶数位置下的tr 7 $("tr :odd")   --------选取奇数位置的tr
用户3159471
2018/09/13
1.7K0
jQuery 选择器
基本选择器 基本选择器是最简单的选择器,可以通过元素id、class和标签名等来直接查找DOM元素。 元素选择器 根据给定元素名匹配元素。如下选择的是所有div元素。 $("div").css("
静默虚空
2018/01/05
7.4K0
[jQuery笔记] jQuery选择器
jquery选择器允许对html中的元素组合单个元素进行操作,jquery的选择器和css的选择器几乎大同小异,大致分为元素选择器、id选择器和类选择器。jquery的选择器基于元素的id、类、类型、属性、属性值等查找或选择html元素,基于已经存在的css选择器,另外,jquery也支持自定义选择器。
行 者
2019/12/05
1.8K0
jquery 选择器
<script type="text/javascript"> $(".demo").click(function(){ alert() }) </script>
用户5760343
2019/10/08
1.5K0
jquery 选择器
点击加载更多

相似问题

颤振医生问题

17

颤振碰撞在“颤振医生”中

20

找不到颤振命令/颤振医生

14

跑步颤振医生失败

15

安装后的颤振医生

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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