使用 Rails 包括对儿童的条件

2024-03-28

我有一个模型Parent有很多孩子Child。我想要获取所有父模型并展示每个Child也是父母的。这是 Rails 的经典用例includes方法,据我所知。

但是,我无法让 Rails 在不将父模型限制为具有子模型的情况下向子模型添加条件。

例如,这仅输出有孩子的父母:

Parent.includes(:children).where(children: {age: 10}).each do |parent|
  # output parent info
  parent.children.where("age = 10").each do |child|
   #output child info
  end
end

我看过Rails 包含有条件 https://stackoverflow.com/questions/16348333/rails-includes-with-conditions但似乎我遇到了与问题的OP相同的麻烦,并且接受的答案的任何一部分都没有解决它(它要么只有一些父母,要么诉诸多个查询)。


你需要使用LEFT JOIN http://www.postgresqltutorial.com/postgresql-left-join/.

Parent.joins("LEFT JOIN children ON parent.id = children.parent_id")
      .where("parent.age = 10 AND children.age = 10")
      .select("parent.*, children.*")

如果您想从parent表中可能有也可能没有对应的行children表,您使用LEFT JOIN条款。如果没有匹配的行children表中各列的值children表被替换为NULL values.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Rails 包括对儿童的条件 的相关文章

随机推荐

  • driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS) 不起作用

    driver manage timeouts implicitlyWait 10 TimeUnit SECONDS 上面的隐式等待代码在 Google Chrome 上对我不起作用 我尝试过使用 selenium 2 47 和 2 53 1
  • 如何在 conda 环境中启动 exe

    我在 Windows 10 中使用 vscode 作为代码编辑器 并希望找到一种简单的方法来使用正确的 conda env 启动它以进行调试 目前 我必须打开命令提示符 然后激活 conda env 然后将 vscode 的快捷方式粘贴到提
  • 直接渲染CGImage(而不是UIImage)?

    我正在做一个CGImage func otf gt CGImage 这是渐变上的贝塞尔蒙版 所以 the path let p UIBezierPath p moveTo etc the mask let m CAShapeLayer se
  • Crystal Reports 10 命令对象更改数据源位置

    我已经在 Crystal Report 中使用了命令对象 现在我需要更改数据源 我已按照知识库文章 c2016958 中的说明进行操作 下载 解压缩并应用了 cr10win en zip 和 dbex10win en zip 但我的连接仍然
  • 访问reactjs中的viewbag属性

    我正在开发一个Web应用程序 我使用reactjs和MVC c 我想知道 jsx 是否包含在 cshtml 中 是否可以访问 jsx 中的 viewbag 属性 我想要将一个对象或 id 传递给 jsx 并将其呈现在 UI 中 ViewBa
  • 如何制作单独的角材料步进器标题和内容?

    我正在用有角度的材料做一个垂直步进器 问题是这个步进器将每个步骤的内容放在步骤标题下方 因此如果有很多步骤 它看起来会很糟糕 因为你必须滚动 我的想法是将标题与内容分开 这样它看起来更像是侧导航 但具有角度材质功能 这是我现在所拥有的 内容
  • 从 Java Applet 调用 Javascript 函数

    我在 HTML 页面中有一个 Java Applet 我需要让小程序调用某个 Javascript 函数来通知 HTML 页面某些事件 我目前调用 JavaScript 函数的方式是 getAppletContext showDocumen
  • Clojure 哈希映射到 xml

    我正在尝试将以下映射转换为 xml 任何具有向量值的键都需要为向量中的每个元素重复 xml 中的键 use clojure xml defn map to xml2 k v cond nil k for e a v tag e conten
  • 使用 DatabaseMetaData 检索 mysql 表注释

    因此 我正在将 Vaadin Java Web 框架用于需要编辑表的功能的项目 Vaadin 提供了一种获取方法Connection对象来自SimpleJDBCConnectionPool 这是 API https vaadin com a
  • XSLT - 从模板中删除空格

    我正在使用 XML 存储一个小型联系人列表 并尝试编写一个 XSL 模板将其转换为 CSV 文件 我遇到的问题是输出中存在空格 输出 Friend John Smith Home 123 test Sebastopol California
  • 在 Matlab 中向量化数组索引/取子集

    假设我有一个长数据向量 y 加上一些索引 我想在每个索引周围提取一个简短的片段或窗口 例如 假设我想构建一个矩阵 其中每个小于 3 的值之前包含 64 个样本 之后包含 64 个样本 这在 for 循环中很简单 WIN SIZE 64 Sa
  • 监视器应该等待什么对象?

    使用 Monitor Wait object obj 时 应该对 obj 使用什么 在这个article http www yoda arachsys com csharp threads 我正在阅读 NET 中的多线程 作者实例化了一个新
  • ASP.NET Core 1.0 - MVC 6 - Cookie 过期

    UPDATE 这绝对不是 RC1 中的错误 cookie 设置与默认的 UserManager 和 UserStore 一起使用 因此它一定与我的 UserManager UserStore 有关 我已经监督过 我基本上使用这里的实现 ht
  • 对数据帧的每一行应用函数并同时递增计数器

    我知道我可以使用apply 在数据帧的每一行上应用函数 如下所示 import pandas as pd df pd DataFrame Name A B C Number 1 2 3 def func row pass df apply
  • 将 Azure 网站连接到 Xero 合作伙伴应用程序

    我正在将我的应用程序与 Xero 集成 这需要两个证书 我在以下人员的帮助下将它们上传到 Azurethis https azure microsoft com en us blog using certificates in azure
  • HTML 使文本可点击,而不使其成为超链接

    我想添加这样的功能 可以选择单击某些 HTML 文本并执行正确的 JavaScript 代码 我怎样才能做到这一点 对于语义我会使用
  • AWS ECR CF 模板失败并显示“提供的存储库策略无效”

    此 CF 模板失败 MyECSrepo Type AWS ECR Repository Properties RepositoryName Ref RepoName RepositoryPolicyText Version 2012 10
  • Shiny - 到 mainPanel 的多个输出

    Shiny 似乎只接受任何提供给的最终输出mainPanel in ui R An 较早的问题 https stackoverflow com questions 22996434 adding more than one graph to
  • 在 Firefox 中使用 -moz-transform 选择框焦点错误

    我注意到 如果我在 Firefox 中对选择框焦点 即 select focus 应用变换 它首先会聚焦选择框 然后您必须再次单击选择框才能真正下拉 还有其他人经历过这个吗 我尝试在 Mozilla 上寻找错误 但没有发现任何东西 Webk
  • 使用 Rails 包括对儿童的条件

    我有一个模型Parent有很多孩子Child 我想要获取所有父模型并展示每个Child也是父母的 这是 Rails 的经典用例includes方法 据我所知 但是 我无法让 Rails 在不将父模型限制为具有子模型的情况下向子模型添加条件