Rails 4.1 ActiveRecord :: relation不再像Array一样

use*_*205 21 ruby activerecord ruby-on-rails-4

在Rails 4.0.4中这段代码工作:

mailboxes = Mailbox.order(:mailbox)
mailboxes.keep_if do |mailbox|
  # test
end
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

我没有找到任何相关信息

任何的想法?

ush*_*sha 39

它在rails 4.1的发行说明

关系不再有像#map这样的mutator方法!和#delete_if.在使用这些方法之前,通过调用#to_a转换为数组.(拉动请求)

由于keep_if是一种mutator方法,因此将其删除Relation