如何获取所有parent条记录的所有记录

How to get all records of all parent records

我需要为表单创建一个 select 框,在其中列出所有 parents 的所有 child 记录。我如何在我的控制器中执行此操作?我在想下面的答案,但它返回 "undefined method nil:NilClass"

before_action :get_children

def get_children
  @parents = current_user.parents.all
  @children = @parents.children.all
end

@parents 是一个数组,因此该数组的子项将为 nil。 所以你必须使用某种类型的循环,如:

def get_children
  children = []
  @parents = current.user.parents.all
  @parents.each do |child|
    children << child
  end
  return children
end

像这样的东西应该有用。

如果你想要一个数组:

@children = @parents.map(&:children).flatten.uniq

如果你想要一个 ActiveRecord::Relation(假设你的模型叫做 Thing,每个东西都是 belongs_to parent):

@children = Thing.where(parent_id: @parents)

您可以执行以下操作:

def get_children
  @parents = current_user.parents.all
  @children = Children.where(parent_id: @parents.pluck(:id).uniq)
end