更新嵌套属性时,'TypeError:无法将Symbol转换为Integer'

时间:2014-04-17 16:02:31

标签: ruby-on-rails activerecord

我正在尝试将Map传递给属性,并且此错误TypeError: can't convert Symbol into Integer正在发生。任何人都可以帮助我理解为什么会这样吗?

此代码一直有效,直到我从Heroku Bamboo迁移到Heroku Cedar(但Rails和Ruby的版本与特定版本相同(1.9.2p320 - > 1.9.2p321和Rails 3.0.20)

显而易见,因为此行正在处理地图attribute_ids = attributes_collection.map {|a| a['id'] || a[:id] }.compact但是' a'最终只返回一个字符串,导致错误。

我包含了正在处理的Map和错误的堆栈跟踪。 https://gist.github.com/akinsgre/10994359

1 个答案:

答案 0 :(得分:1)

更新

我想出了问题......现在我需要弄清楚如何修复现有记录。

nested_attributes在某些时候已从has_one更改为has_many;所以“坏”地图有这个

"party_attributes" => {
                "profile" => "e04aaa50c9c3501de345fb9b468e53d5371e2e83e098bd2d67de4be39531616a"
            }

好地图有

 "party_attributes" => {
                "0" => {
                    "profile" => "e04aaa50c9c3501de345fb9b468e53d5371e2e83e098bd2d67de4be39531616a"
                },
                "1" => {
                    "profile" => "8cdcde33e1315a77894d5a9601cff114b97dd5da9ca5f1c87ea7be3ea81398b3"
                }