2016-05-27 4 views
2

Мне нужно создать поле выбора для формы, где я перечисляю все дочерние записи всех родителей. Как это сделать в моем контроллере? Я думаю, ответ ниже, но его возвращение «неопределенный метод ноль: NilClass»Как получить все записи всех родительских записей

before_action :get_children 

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

'@ parents' - массив, поэтому дети этого массива будут равны нулю. – agustaf

ответ

0

@parents является массивом, чтобы дети этого массива будет равен нулю. Таким образом, вы должны использовать некоторый тип петли, как:

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

Нечто подобное Oughta работать.

0

Если вы хотите массив:

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

Если вы хотите ActiveRecord :: Relation (предполагается, что модель называется вещь, и каждая вещь belongs_to родителя):

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

Вы можете сделать следующее:

def get_children 
    @parents = current_user.parents.all 
    @children = Children.where(parent_id: @parents.pluck(:id).uniq) 
end 
Смежные вопросы