2014-04-09 19 views
17

in Rails 4.0.4 questo codice di lavoro:Rails 4.1 ActiveRecord :: relazione non è più come Array

mailboxes = Mailbox.order(:mailbox) 
mailboxes.keep_if do |mailbox| 
    # test 
end 

in Rails 4.1.0 è rompere con NoMethodError (undefined method keep_if for <Mailbox::ActiveRecord_Relation:0x5494f80>)

e deve essere cambiato in

mailboxes = Mailbox.order(:mailbox).to_a 
mailboxes.keep_if do |mailbox| 
    # test 
end 

non mi trovare tutte le informazioni su questo

Qualche idea?

risposta

34

la sua in release notes per rotaie 4.1

relazioni non ha più metodi mutatori come #Map! e #delete_if. Converti in un array chiamando #to_a prima di utilizzare questi metodi. (Pull Request)

Dal keep_if è un metodo mutatore, la sua rimosso dal Relation

+0

Questo spiega il motivo per cui non ho potuto ottenere una risposta JSON appropriata sul mio 'respond_with User.all'. Ma fare una risposta con User.all.to_a ha correttamente richiamato il mio metodo to_json e mi ha dato il risultato desiderato. Grazie! – empee

+0

risolto il mio errore dopo una chiamata 'Modal.order':' NoMethodError (metodo non definito 'sort_by!' Per # ' – Cbas

Problemi correlati