you*_*786 5 ruby-on-rails rails-activerecord
我有一个Parent有很多孩子的模型Child。我想获得所有父模型并显示每个父模型Child。includes据我所知,这是 Rails方法的经典用例。
但是,我无法让 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
Run Code Online (Sandbox Code Playgroud)
我已经查看了Rails 包含条件,但似乎我遇到了与问题的 OP 相同的问题,并且接受的答案的任何部分都不能解决它(它要么只有一些父项,要么求助于多个查询) .
您需要使用LEFT JOIN.
Parent.joins("LEFT JOIN children ON parent.id = children.parent_id")
.where("parent.age = 10 AND children.age = 10")
.select("parent.*, children.*")
Run Code Online (Sandbox Code Playgroud)
如果要从parent表中选择表中可能有也可能没有相应行的行children,请使用该LEFT JOIN子句。如果children表中没有匹配的行,则表中列children的NULL值将替换为这些值。
| 归档时间: |
|
| 查看次数: |
8011 次 |
| 最近记录: |