本文介绍了Rails 4.1 ActiveRecord::relation 不再像 Array的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 Rails 4.0.4 中,此代码有效:

in Rails 4.0.4 this code work:

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

在 Rails 4.1.0 中,它与 NoMethodError(未定义方法 keep_if for <Mailbox::ActiveRecord_Relation:0x5494f80>)中断

in Rails 4.1.0 it break with NoMethodError (undefined method keep_if for <Mailbox::ActiveRecord_Relation:0x5494f80>)

并且必须更改为

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

我没有找到任何相关信息

I don't find any information about that

有什么想法吗?

推荐答案

Its in 发行说明 适用于 Rails 4.1

Its in release notes for rails 4.1

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

由于 keep_if 是一个 mutator 方法,它从 Relation

Since keep_if is a mutator method, its removed from Relation

这篇关于Rails 4.1 ActiveRecord::relation 不再像 Array的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 09:17