首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5:查询空关联

Rails 5:查询空关联
EN

Stack Overflow用户
提问于 2019-06-03 15:55:46
回答 1查看 268关注 0票数 1

我有两种型号的ClientMealWeek,我希望能够把所有的客户----没有--任何活动的套餐周。我可以通过做以下任何一件事来拉动活跃的用餐周:

代码语言:javascript
复制
Client.find(x).meal_weeks.where(active: true)
Client.find(x).meal_weeks.unused

我可以轻松地将客户拉到活跃的用餐周:

代码语言:javascript
复制
Client.includes(:meal_weeks).where(meal_weeks: { active: true })

但对于那些没有积极用餐的客户来说,情况就不一样了。我尝试在上面的查询中包含一个not,但是返回所有具有非活动用餐周的客户端,而不是没有任何活动用餐周的客户端( all meal_weeks‘s active: false)。

有办法这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-03 16:31:00

在rails 5+中,您可以使用where.not,因此在本例中,您的查询将是

代码语言:javascript
复制
Client.where.not(id: 
  Client.select(:id).joins(:meal_weeks)
      .where(meal_weeks: {active: true})
) 

这将使用原始版本的子查询作为NOT IN子句。结果SQL

代码语言:javascript
复制
SELECT 
 clients.* 
FROM 
 clients
WHERE 
 clients.id NOT IN ( 
    SELECT 
     clients.id
    FROM 
     clients
      INNER JOIN meal_weeks ON meal_weeks.client_id=clients.id
    WHERE 
      meal_weeks.active= true
  )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56430769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档