На основании того, как вы построили запрос, он получает значение для всех записей, соответствующих условию where
, поэтому метод .pluck
возвращает массив, для которого нельзя вызвать метод .to_i
.
Полагаю, вам нужно выбрать нужное значение из первой записи, соответствующей вашему запросу, поэтому вы можете выполнить рефакторинг, как показано ниже
def subtraction
#find the first item with id supplied
item = Item.where(id: params[:id]).first
#after subtraction value
val = item.value - 1
#update the value
final = item.update(value: val)
end