К сожалению, вы можете установить новое значение только с помощью update
.
Active Record. В вашем случае update(:quantity => +=7)
фактически повысит syntax error, unexpected operator-assignment)
.
Другая форма, которую вы использовали в этом вопросе update(:quantity => +7)
, фактически эквивалентна update(:quantity => 7)
, и такая же, как update(quantity: 7)
. +7
это просто еще один способ сказать 7
. Как вы заметили, эта операция на самом деле только устанавливает новое значение равным 7.
Чтобы решить вашу проблему, вы можете разбить свой 1-слойный текст на 2 строки:
- сохранить элемент, который вы Вы нашли в переменной
- используйте предыдущее значение переменной для вычисления
Например, замените Item.find_by(itemName: 'kimas').update(:quantity => +=7)
на:
item = Item.find_by(itemName: 'kimas')
item.update(quantity: item.quantity + 7)
Будет создана другая опция необработанный SQL код, но, вероятно, будет излишним для вашей ситуации.