获取他们的第一个孩子拥有特定财产的所有父记录

时间:2014-03-06 16:51:26

标签: ruby-on-rails ruby-on-rails-3.2 rails-activerecord

我正在尝试创建一个ActiveRecord查询来检索他们的第一个孩子具有特定属性的所有父记录。

Parent has_many children
Child has_one parent

基本上我正在尝试:

Parent.includes(:children).where('child.first.property = ?', 'something')

我怎样才能达到这样的目标?

1 个答案:

答案 0 :(得分:1)

在代码中执行这些检查可能更容易,并且稍后会担心优化。

Parent.select { |p| p.children.order("created_at asc").first.property == "something" }

这将最终为每个父母加载第一个孩子。另一种选择是首先与具有该属性的孩子一起加入以缩小父母的范围,然后再执行相同的检查。

Parent.joins(:children).where(:property => "something").group("parents.id").select { |p| p.children.order("created_at asc").first.property == "something" }