ruby - Rails 4.1 ActiveRecord::relation 不再像数组

标签 ruby activerecord ruby-on-rails-4

在 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

没有找到相关信息

有什么想法吗?

最佳答案

它在 release notes 中对于 rails 4.1

Relation no longer has mutator methods like #map! and #delete_if. Convert to an Array by calling #to_a before using these methods. (Pull Request)

因为 keep_if 是一个增变器方法,所以它从 Relation 中移除

关于ruby - Rails 4.1 ActiveRecord::relation 不再像数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973737/

相关文章:

ruby-on-rails - Ruby on Rails ActiveRecord,其中属性不为空

ruby-on-rails - Rails 服务器启动时如何自动启动浏览器?

ruby-on-rails - 在 Rails 中动态更新内容

javascript - 我的大部分 Bootstrap 3.1.1 样式都没有应用

ruby-on-rails - Rails - 3.0.6 到 3.0.14 activerecord、多重连接和 where 子句异常

php - 如何使用 CodeIgniter 的 ActiveRecord 选择列值不为 NULL 的行?

Ruby 1.8.6,SQLite3 线程安全

ruby - 如何在 Ruby 中直接触发原始 MongoDB 查询

php - 有什么方法可以轻松地将 Ruby 代码转换为 PHP?

ruby-on-rails - RefineryCMS 引擎错误 : did not have a valid gemspec