2 votes

Comment obtenir tous les enregistrements de tous les enregistrements parents

J'ai besoin de créer une boîte de sélection pour un formulaire où je liste tous les enregistrements des enfants de tous les parents. Comment puis-je faire cela dans mon contrôleur ? Je pense à la réponse ci-dessous, mais elle renvoie "undefined method nil:NilClass".

before_action :get_children

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

0voto

agustaf Points 432

s est un tableau, donc les enfants de ce tableau seront nil. Il faudrait donc utiliser un type de boucle comme :

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

Quelque chose comme ça devrait marcher.

0voto

Anand Points 172

Si vous voulez un tableau :

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

Si vous voulez une relation ActiveRecord::Relation (en supposant que votre modèle s'appelle Thing, et que chaque thing appartient à son parent) :

@children = Thing.where(parent_id: s)

0voto

Alejandro Escobar Points 108

Vous pouvez procéder comme suit :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X