Почему я получаю это "можно" Ошибка изменения замороженного хеша?

У меня есть модель человека и модель элемента. У человека много элементов, и элемент принадлежит человеку.

В этом коде мне нужно удалить существующие элементы для человека и создать новые из параметра (который представляет собой массив хешей). Затем мне нужно обновить одно из полей элемента на основе одного из других его полей.

@person = Person.find(params["id"])

@person.person_items.each do |q|
    q.destroy
end

person_items_from_param = ActiveSupport::JSON.decode(params["person_items"])

person_items_from_param.each do |pi|
    @person.person_items.create(pi) if pi.is_a?(Hash)
end

@person.person_items.each do |x|
    if x.item_type == "Type1"
        x.item_amount = "5"
    elsif x.item_type == "Type2"
        x.item_amount = "10"
    end
    x.save
end

На x.item_amount = "5" & x.item_amount = "10" строк Я получаю такую ​​ошибку:

RuntimeError in PersonsController#submit_items
can't modify frozen hash 

Как я могу это исправить? Спасибо за прочтение. Я использую git, поэтому следую инструкциям здесь: http://code.google.com/p/chromium/wiki/UsingGit ...

Мне просто нужен код указанной версии Chromium, например r69297, которая является последней версией Chrome для разработчиков. Я использую git, поэтому следую инструкциям здесь: http://code.google.com/p/chromium/wiki/UsingGit однако после того, как я синхронизирую весь код и просматриваю журнал фиксации, я не могу найти эту версию! Затем я подумал о теге и искал здесь. Как использовать git для проверки указанной версии Webkit? здесь я нашел, но после выполнения всех шагов и довольно долгого ожидания я все еще ничего не получил. хранит ли git-репозиторий хрома информацию о тегах? как я могу их получить? thx

6
задан Community 23 May 2017 в 11:47
поделиться