Подтвердить что ты не робот

Rails 4.1 ActiveRecord:: отношение больше не похоже на массив

в Rails 4.0.4 этот код работает:

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

в Rails 4.1.0 он разбивается на NoMethodError (undefined method keep_if for <Mailbox::ActiveRecord_Relation:0x5494f80>)

и его нужно заменить на

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

Я не могу найти информацию об этом

Любая идея?

4b9b3361

Ответ 1

Его в примечания к выпуску для рельсов 4.1

Отношение больше не имеет методов мутатора, таких как #map! и #delete_if. Преобразуйте в массив путем вызова #to_a перед использованием этих методов. (Тянуть Запрос)

Так как keep_if является мутаторным методом, его удаляют из Relation