如何获取所有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
我需要为表单创建一个 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