gpt4 book ai didi

ruby-on-rails - 使用 Rails 包括对 child 的条件

转载 作者:行者123 更新时间:2023-12-03 15:30:20 24 4
gpt4 key购买 nike

我有一个模型 Parent有很多 child Child .我想获取所有父模型并显示每个 Child父级也是如此。这是 Rails 的经典用例 includes方法,据我所知。

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

例如,这仅输出有 child 的 parent :

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 includes with conditions但似乎我遇到了与问题的 OP 相同的麻烦,并且接受的答案的任何部分都没有解决它(它要么只有一些 parent ,要么求助于多个查询)。

最佳答案

您需要使用 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 取代值。

关于ruby-on-rails - 使用 Rails 包括对 child 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com