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
Я не могу найти информацию об этом
Любая идея?
Ответы
Ответ 1
Его в примечания к выпуску для рельсов 4.1
Отношение больше не имеет методов мутатора, таких как #map! и #delete_if. Преобразуйте в массив путем вызова #to_a перед использованием этих методов. (Тянуть Запрос)
Так как keep_if
является мутаторным методом, его удаляют из Relation