2014-12-08 2 views
1

질문이 범주에 속합니다.각 카테고리에서 5 개 질문을 얻고 5 개 미만인 경우 - 5 시까 지 존재하는 것을 반복하십시오.

각 카테고리의 5 개 질문을 배열에 삽입하고 카테고리에 5 개가없는 경우 - 각 카테고리에서 5 개씩 중복되도록 삽입해야합니다. 거기에 나는 다음과 같은 코드를 사용하는 것이 각 카테고리에서 5 개 이상의 질문을했다,하지만 난 단지 카테고리 1 개 또는 2 질문이있을 때, 분명히 작동하지 않습니다

경우

a = [] 
Category.all.each do |category| 
    category.questions.order(position: :asc).limit(5).each do |question| 
    a << question 
    end 
end 

답변

1

내가 제대로 이해하면

a = [] 
Category.all.each do |category| 
    questions = category.questions.order(position: :asc).limit(5) 
    a += ([questions] * 5).first(5) 
end 
1
a = [] 
Category.all.each do |category| 
    ca = [] 
    category.questions.order(position: :asc).limit(5).each do |question| 
    ca << question 
    end 
    if !ca.empty?; 
    ca *= 5 
    ca = ca[0, 5] 
    ca.each do |question| a << question end 
    end 
end 
2
a = Category.pluck(:questions).flat_map do |questions| 
    questions.order(postion: :asc).limit(5).cycle.take(5) 
end 
관련 문제