2016-07-20 15 views
2

Die App wurde mithilfe der Indexmethode auf Rails 5 aktualisiert. Das Problem besteht darin, dass es nicht zum nächsten ActiveRecord-Auflistungsdatensatz hochgezählt wird. Der folgende Code wird in Rails 4.0 verwendet. Versucht mit index_by.Rails 5: ActiveRecord-Auflistung index_by

def next_question 
    index = campaign.quiz_questions.index self 
    campaign.quiz_questions[index + 1] 
end 

Debugger

(byebug) campaign.quiz_questions.index 
*** NoMethodError Exception: undefined method `index' for #<QuizQuestion::ActiveRecord_Associations_CollectionProxy:0x007f80012d71b0> 
Did you mean? index_by 

Verwendung index_by

(byebug) index = campaign.quiz_questions.index_by 
#<Enumerator: #<ActiveRecord::Associations::CollectionProxy [#<QuizQuestion id: 113, campaign_id: 492, message: "Where did Hullabalooza's freak show manager send H...", created_at: "2016-07-20 20:50:32", updated_at: "2016-07-20 20:50:32">]>:index_by> 

Index + 1

(byebug) index + 1 
*** NoMethodError Exception: undefined method `+' for #<Enumerator:0x007fc4db445960> 

nil 

Antwort

2

verändert es find_index Methode. Jetzt funktioniert es

def next_question 
    index = campaign.quiz_questions.find_index self 
    campaign.quiz_questions[index + 1] 
end