Ruby on rails 选择一个父项和一个子项,不进行额外查询

Ruby on rails 选择一个父项和一个子项,不进行额外查询,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有两种型号 class Parent < ActiveRecord::Base has_many :children end 但这是一种非常糟糕的方法,会运行多个查询。我需要一种返回活动记录列表的最佳方法。我认为您的问题可以用一个简单的方法解决 这样,您将对整个循环执行两个查询。我认为您的问题可以通过简单的 这样,您将对整个循环执行两次查询。以下是执行相同操作的最佳方法,它将只运行两次查询: Parent.includes(:children).collect { |p| p.ch

我有两种型号

class Parent < ActiveRecord::Base
  has_many :children
end

但这是一种非常糟糕的方法,会运行多个查询。我需要一种返回活动记录列表的最佳方法。

我认为您的问题可以用一个简单的方法解决


这样,您将对整个循环执行两个查询。

我认为您的问题可以通过简单的


这样,您将对整个循环执行两次查询。

以下是执行相同操作的最佳方法,它将只运行两次查询:

Parent.includes(:children).collect { |p| p.children.first }

有关更多详细信息,请参阅

中的
Eager Loading Associations
部分,以下是执行相同操作的最佳方法,它将只运行查询两次:

Parent.includes(:children).collect { |p| p.children.first }

有关更多详细信息,请参阅

中的
Eager Loading Associations
部分。如果要获取活动记录对象,请通过以下方式从另一端拨打电话并使用SQL GROUP\u:

Child.joins(:parent).group(:parent_id)

如果要获取活动记录对象,请通过以下方式从另一方调用并使用SQL GROUP_:

Child.joins(:parent).group(:parent_id)

hi xlembouras这将从所有父级加载所有子级我只希望从数据库中加载每个父级和一个子级。这将返回我希望活动记录的数组。hi xlembouras这将从所有父级加载所有子级我只希望从数据库中加载每个父级和一个子级。这将返回我数组我想要活动记录对象此操作返回数组我想要活动记录对象。此操作返回数组我想要活动记录对象。
Child.joins(:parent).group(:parent_id)