什么导致未定义的方法`map!'对于ActiveRecord_Relation?

时间:2015-10-26 13:03:35

标签: ruby-on-rails ruby-on-rails-4 rspec

我正在从Rails 3更新到Rails 4.2,当我运行我的应用程序的测试套件时,我收到以下错误:

 Failure/Error: get 'edit', id: @shops[3].id
 NoMethodError:
   undefined method `map!' for #<Shop::ActiveRecord_Relation:0x007ff1d69b4f40>

控制器中的代码是:

existing_shops.map! { |obj| [["##{obj[:shop_id]} #{obj[:name]},
#{obj[:phone]}, #{obj[:address]}, #{obj[:city]}, #{obj[:state]}, #{obj[:zipcode]} "]]}

我正在使用Rails 4.2.4和RSpec 3.3.0。

1 个答案:

答案 0 :(得分:9)

  

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

existing_shops.to_a.map! { ... }

- A Guide for Upgrading Ruby on Rails