У меня есть модель Person и модель Item. У человека много предметов, и предмет принадлежит человеку.
В этом коде мне нужно удалить существующие элементы для человека и создать новые из параметра (который представляет собой массив хэшей). Затем мне нужно обновить одно из полей элемента, основанное на одном из его других полей.
@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
Как я могу это исправить? Спасибо за чтение.